这是问题
<div id="my-id" ng-click="moveOn(10)">Click me</div>
在指令中我有
scope.moveOn = function (val) {
$location.search('id', val);
}
最后,在这个指令的父级中,我倾听这个id
$scope.$watch(function () {
return $routeParams.id;
}, function (newId, oldId) {
...
});
此调整很有效,在调用$location.search
后立即触发$watch
。但是现在我还有一个指令,它略有不同,如下所示:
element.find('#my-id').click(function (val) {
$location.search('id', val);
});
在模板中没有ng-click
!
在这种情况下,我也可以看到对$location.search
的调用已经完成,但现在需要很长时间(几秒钟)才能观察到它。
因此,出于某种原因,ngClick
和绑定到click事件之间必须存在差异。有什么建议可能会在这里发生什么?
答案 0 :(得分:1)
您正在更新角度内的事件中更新角度。
尝试使用$apply
通知角度更改,以便运行摘要
element.find('#my-id').click(function (val) {
scope.$apply(function(){
$location.search('id', val);
});
});