我在角应用程序中有一段代码,它将导航树写入<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>
...在我的模板中。这是可能的,从模板范围获取此模型还是我必须将整个树序列化为额外的变量?
答案 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);
}
};
});
访问父作用域似乎有些苛刻,但因为这总是来电范围,我认为没关系。