我有指令这个指令:
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我得到了未定义的值。
答案 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)
您的代码应该没有问题。也许你可以发现你做的不同: