问题来了
<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
er 会立即触发。但现在我还有一个指令,其作用略有不同,如下所示:
element.find('#my-id').click(function (val) {
$location.search('id', val);
});
模板中没有ng-click
!
在这种情况下,我还可以看到对 $location.search
的调用,但现在需要很长时间(几秒钟)观察者才会关闭。
因此,出于某种原因,ngClick
和绑定(bind)到单击事件之间肯定存在差异。有什么建议吗?
最佳答案
您正在 Angular 之外的事件中更新 Angular 。
尝试使用 $apply
通知 Angular 更改,以便它可以运行摘要
element.find('#my-id').click(function (val) {
scope.$apply(function(){
$location.search('id', val);
});
});
关于javascript - element.click 和 $location.search 的 Angular 怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33442478/