【发布时间】:2015-05-14 17:36:46
【问题描述】:
我有一个像这样设置的角度指令(具有隔离范围)
<div ng="$last" somedirective datajson=mydata myprop="{{ mydata.myspecialprop }}"></div>
(实际上会被多次渲染,因为它在 ng-repeat 中。)
按照SO answer 的说明,我尝试观察myprop 指令的变化,但是,即使属性发生变化(在单击事件上),$scope.watch 中的代码也不会运行。我也试过scope.$watch(attrs.myprop, function(a,b){...)它也从来没有运行过。如何查看myprop的变化
myapp.directive('somedirective', function () {
return {
restrict: 'AE',
scope: {
datajson: '=',
myprop: '@'
},
link: function (scope, elem, attrs) {
scope.$watch(scope.myprop, function (a, b) {
if (a != b) {
console.log("doesn't get called when a not equal b");
} else {
}
});
}
};
}
更新:更改属性的单击事件在控制器中处理,我猜这不会反映在隔离范围指令中,因此 $watch 永远不会被触发。有办法处理吗?
【问题讨论】:
-
myprop: '@没有结束'只是复制粘贴问题吗? -
您是否尝试过使用 scope.$watch('myprop' , function(a,b){}});,我的指令以这种方式监视范围变量并且它工作正常。
-
@DylannWatt 是的,只是复制粘贴/错别字
-
@Kathir 我也试过了,当道具改变时没有任何反应
-
我认为问题可能是控制器中处理了单击事件,并且更改未反映在 Isolate scop 指令中。有解决办法吗?
标签: angularjs