angular element.click 和 $location.search 的怪异
angular weirdness with element.click and $location.search
问题来了
<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
与绑定到点击事件之间肯定存在差异。有什么建议吗?
您正在 angular 之外的事件中更新 angular。
尝试使用 $apply
通知 angular 更改,以便它可以 运行 摘要
element.find('#my-id').click(function (val) {
scope.$apply(function(){
$location.search('id', val);
});
});
问题来了
<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
与绑定到点击事件之间肯定存在差异。有什么建议吗?
您正在 angular 之外的事件中更新 angular。
尝试使用 $apply
通知 angular 更改,以便它可以 运行 摘要
element.find('#my-id').click(function (val) {
scope.$apply(function(){
$location.search('id', val);
});
});