我想知道我在某处是否有一些不良布线和/或假设在指令控制器(具有隔离范围)中设置所有属性是不安全的?
示例:
.directive("wordEditor",function(){
return {
scope : {
categories : "=",
},
controller : function($scope)
{
$scope.categories; // is it safe?
...
到目前为止,它运行良好,但是当我开始使用嵌套指令时,我得到了未定义的属性。
所以我想排除至少一件事 - 我是否保证(对于当前指令)在执行时属性绑定在控制器中?
我不是在问它是否具有全球意义上的价值,因为它取决于外部世界的含义,我在询问给定指令中发生了什么。
答案 0 :(得分:2)
我是否有保证(对于当前指令)在执行时属性绑定在控制器中?
无法保证。仅当子控制器在此时可在父控制器中使用时,绑定范围属性才可用。如果指令由ng-repeat
托管,或者父控制器使用$onInit
来初始化其属性,则不会成立。
由于数据绑定性质,应始终假设绑定属性尚未可用或稍后可能更改,应使用$scope.$watch
或$onChanges
进行监视。