javascript - element.click 和 $location.search 的 Angular 怪异

标签 javascript angularjs directive

问题来了

<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 后,$watcher 会立即触发。但现在我还有一个指令,其作用略有不同,如下所示:

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/

相关文章:

AngularJS 覆盖了孤立的指令作用域

javascript - 如何从创建许多选择标签的指令中将项目列表添加到 Controller 范围

javascript - 提交并生成动态 PHP 表单

javascript - 使用导航栏滚动 - 未捕获的类型错误 : Cannot read property 'top' of undefined

angularjs - 为什么我的 ionic www 文件夹没有被 Git 跟踪?

javascript - Angular 路由应用程序在本地工作,不在 plunker 上工作 - ui-view 不拉入 View :(

javascript - PHP和JS读取HTML5中的音频流是否中断

javascript - 如何删除数组中的空格?

javascript - ng 类访问元素文本

javascript - 从指令中观察表达式