angular指令属性隔离范围undefined在ng-repeat之外

时间:2014-05-28 14:27:57

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有指令这个指令:

myApp.directive('myDirective',['$http', function($http) {
      return {
        restrict: 'AEC',    
        replace: true,
        scope: { attr1: '=' , attr2: '=' }, 
            link: function(scope, element, attrs) {
...
}
}]);

如果我把指令内部ng-repeat工作,那么我可以访问属性的值(例如scope.attr1)

<div ng-repeat="item in items"
    <my-directive attr1="item.value1" attr2="item.value2"></my-directive>
</div>

但如果我把指令放在ng-repeat之外,那么我只有my-directive:

{{mymodel.value1}} {{mymodel.value2}}   //{{}} print correct value
<my-directive attr1="mymodel.value1" attr2="mymodel.value2"></my-directive>  //this fail

我无法访问属性,所以如果我访问例如。 scope.attr1我得到了未定义的值。

3 个答案:

答案 0 :(得分:1)

“item”对象仅在div中使用ngRepeat定义,因此当您尝试使用{div以外的列表“items”访问特定项目时{1}}您必须使用ngRepeat语法。尝试:

items[index].value1

答案 1 :(得分:0)

如果值是简单类型,则应使用&#39; @&#39;而不是双向模型绑定&#39; =&#39;暗示。

另外,你如何阅读你的价值观。你是通过scope.attr1或attrs [&#39; attr1&#39;]阅读它们 - 因为attr集合只保存属性中的值,而范围实际上是对象的

答案 2 :(得分:0)

您的代码应该没有问题。也许你可以发现你做的不同:

Working Example Here