我有使用NG隱藏有時隱藏的自定義指令:自定義指令隱藏,但代碼仍然運行
<my-custom-directive ng-show="vm.showBox"
value="vm.objects"
></my-custom-directive>
從我的自定義指令代碼的片段:
function myCustomDirective() {
var directive = {
controller: controller,
controllerAs: 'vm',
///...
scope: {
value: '='
}
};
return directive;
function controller($scope) {
var vm = this;
///...
$scope.value.dates = $scope.value.dates || [];
}
}
的問題:即使當指令不應該被加載/顯示(因爲vm.showBox
爲false)時,自定義指令的控制器代碼將運行,在這種情況下,它將失敗,因爲$scope.value
未被傳遞(在那裏未定義)。
爲什麼指令的控制器代碼無論如何都運行,如果指令是隱藏的?我想假設,如果使用指令,它將被賦予有效的參數,而不必檢查是否定義了$scope.value
。