指令的属性是否绑定在控制器中?

时间:2016-07-30 12:04:05

标签: angularjs data-binding angularjs-directive

我想知道我在某处是否有一些不良布线和/或假设在指令控制器(具有隔离范围)中设置所有属性是不安全的?

示例:

.directive("wordEditor",function(){
  return {
    scope : {
      categories : "=",
    },

    controller : function($scope)
    {
      $scope.categories; // is it safe?
      ...

到目前为止,它运行良好,但是当我开始使用嵌套指令时,我得到了未定义的属性。

所以我想排除至少一件事 - 我是否保证(对于当前指令)在执行时属性绑定在控制器中?

我不是在问它是否具有全球意义上的价值,因为它取决于外部世界的含义,我在询问给定指令中发生了什么。

1 个答案:

答案 0 :(得分:2)

  

我是否有保证(对于当前指令)在执行时属性绑定在控制器中?

无法保证。仅当子控制器在此时可在父控制器中使用时,绑定范围属性才可用。如果指令由ng-repeat托管,或者父控制器使用$onInit来初始化其属性,则不会成立。

由于数据绑定性质,应始终假设绑定属性尚未可用或稍后可能更改,应使用$scope.$watch$onChanges进行监视。