0

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

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

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

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

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

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

4

1 回答 1

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

访问父作用域似乎有点骇人听闻,但是因为这始终是调用者作用域,所以我认为没关系。

于 2013-09-12T16:44:19.260 回答