将数组放入angular指令中

时间:2013-09-12 16:24:00

标签: javascript angularjs angularjs-directive angularjs-scope

我在角应用程序中有一段代码,它将导航树写入<div>。此树可能会根据mymodule.tree.folders的模型更改其大小。现在我想编写一个指令class="scrollable",它将jquery.nicescroll的功能添加到包装<div>中:

<div class="scrollable">
    ... here is my resizing tree ...
</div>

现在,我每次都要调用nicescroll的resize()函数,树模型mymodule.tree.folders会发生变化。在内容更改其大小后,这对于使此库按预期工作是必要的。

我现在的问题是:如何将模型mymodule.tree.folders(它是一个数组)放入我的指令中才能$watch()在那里?我想写这样的东西:

<div class="scrollable" scrollable-watch="mymodule.tree.folders">
    ... here is my resizing tree ...
</div>

...在我的模板中。这是可能的,从模板范围获取此模型还是我必须将整个树序列化为额外的变量?

1 个答案:

答案 0 :(得分:0)

我找到了通过$parent范围访问模型的方法:

'use strict';

angular.module('shared.directives.scrollable', []);

angular.module('shared.directives.scrollable').directive('scrollable', function() {

    return {
        restrict: 'C',
        link: function(scope, element, attrs) {
            scope.$watch('$parent.' + attrs.scrollableWatch, function(newValue, oldValue) {
                console.log('Model changed!');
            }, true);
        }
    };
});

访问父作用域似乎有些苛刻,但因为这总是来电范围,我认为没关系。