我正在尝试编辑由其他人编写的角度指令,但遇到了一个问题。这是一个属性指令,我想观察传入的值作为属性值的变化。
当我给它一个隔离范围并使用 scope.$watch 观察属性时,这很有效。但是,使用隔离作用域会破坏指令,因为它最初将作用域设置为 true,这是它需要用于其他事情的(据我了解,这意味着它继承了父作用域)。
所以我的问题是,我怎样才能继承父作用域,同时也观察属性的值?
为了帮助澄清,这里是指令的一个基本示例:
return {
scope: {
myGridsterItem: "=gridsterItem"
},
restrict: 'EA',
controller: 'GridsterItemCtrl',
controllerAs: 'gridsterItem',
require: ['^gridster', 'gridsterItem'],
link: function(scope, $el, attrs, controllers) {
.....
// need to dynamically update draggable/resizable of individuaol gridster item if properties change
scope.$watch("myGridsterItem.draggable", function(newVal) {
draggable.updateDraggable(newVal);
}, true);
scope.$watch("myGridsterItem.resizable", function(newVal) {
resizable.updateResizable(newVal);
}, true);
.....
}
}
由于它没有继承父范围,因此会引发错误。如果我设置
scope: true
我的错误已解决,但手表处理程序从未运行。
HTML的粗略轮廓:
<div gridster="gridsterOpts">
<ul>
<li gridster-item="getPrefs(portlet.id)", ng-repeat="portlet in getPortlets()">
.....
</li>
</ul>
</div>
请帮助我,谢谢!