我有一个指令,我需要在通过属性传递的位置访问范围。
HTML:
<div my-directive scope-location="settings.main.url">
...
</div>
指令:
link: function(scope, elm, attrs) {
// How can I do
// scope['settings']['main']['url'] = angular.element(elm).text();
// where "['settings']['main']['url']" comes part from attr "scope-location"
// with value "settings.main.url"?
scope[attrs.scopeLocation] = angular.element(elm).text();
}
答案 0 :(得分:0)
有三种方法可以实现这个目标
由于您的指令从父级继承其范围,因此该变量可使用
scope.settings.main.url
如果您不想进行硬编码,可以使用{/ 1>}等服务,例如
var location = $ parse(attrs.scopeLocation);
位置(范围);
您可以创建隔离范围并将变量传递给指令定义中的范围对象,例如
范围:{ scopeLocation: '=' }
我为前两种方法创造了一个小提琴http://jsfiddle.net/beyND/。