我有一个让事情可重复的指令。例如,<div repeat-this><p>hey</p></div>
将重复<p>hey</p>
,例如5次。
在$compile
的{{1}}函数中,我将所有内容包装在
repeat-this
这样AngularJS就可以为我复制元素,范围等。
但是,此集合的名称是使用指令<div class="repeatable" ng-repeat="item in collection">contents go here<div>
声明的,并且可以根据指令的位置进行更改(有一些ng-includes可以包含更多myCollectionName
但是此名称的使用者应该只使用层次结构中最接近的一个)。我可以在父元素中使用指令控制器获取集合的名称,但是它仅在myCollectionName
的postLink函数中可用,我无法修改repeat-this
部分使其像{ {1}}或item in collection
。这样做的好方法是什么?
答案 0 :(得分:1)
从指令范围内访问属性时,不应直接访问该属性。
例如(在指令中):
scope.myProperty = 'myval';
您应该将属性的名称作为参数传递给指令:
<div myDirective="myProperty">
在您的指令中,您可以使用传入的参数来访问该属性:
link: function postLink(scope, element, attrs) {
var propertyAccessor = $parse(attrs.myDirective);
propertyAccessor.assign(scope, 'myval');
}
使用$ parse很重要,因为它允许您使用实例myDirective="item.myProperty"