0

我有一个指令,我需要在通过属性传递的位置访问范围。

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();
    }

小提琴:http: //jsfiddle.net/GEhSG/3/

4

1 回答 1

0

有三种方法可以实现这一目标

  • 由于您的指令从父级继承其范围,因此该变量可以使用

    scope.settings.main.url

  • 如果不想硬编码,您可以使用$parse类似的服务

    var location=$parse(attrs.scopeLocation);

    位置(范围);

  • 您可以创建隔离范围并将变量传递给指令定义中的范围对象,例如

    范围:{范围位置:'='}

我为前两种方法创建了一个小提琴http://jsfiddle.net/beyND/

于 2013-09-01T09:25:44.253 回答