从指令中的范围路径访问模型

时间:2013-09-01 07:51:10

标签: angularjs angularjs-directive

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

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/

1 个答案:

答案 0 :(得分:0)

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

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

    scope.settings.main.url

  • 如果您不想进行硬编码,可以使用{/ 1>}等服务,例如

    var location = $ parse(attrs.scopeLocation);

    位置(范围);

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

    范围:{    scopeLocation: '=' }

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