ng-mousedown的意外行为与ng-click一起使用

时间:2015-04-30 11:24:01

标签: javascript angularjs angularjs-ng-click

我有以下html布局:

<label ng-mousedown="mousedownHandler($event)"
       ng-click="clickHandler($event)">
    <input type="checkbox" />
</label>

以下范围内的方法:

$scope.mousedownHandler = function(e) {
    console.log('mousedown');
};
$scope.clickHandler = function(e) {
    console.log('click');
};

这个plunker似乎是成功的:http://plnkr.co/edit/pb02Zy6MtB322dUE4iUE?p=preview,但是我不能以相同的方式在我的代码中重现它,尽管我有一些明显的差异,比如我不需要在点击中手动处理复选框模型值处理程序来改变它的价值。

另外我不明白为什么要在点击处理程序中放置e.preventDefault()以使此代码段正常工作?而且为什么不这样做会导致clickHandler两次发射?

但是我遇到的最重要的事情是更改属性顺序会改变我的案例的窗口小部件行为。

当我第一次放置ng-mousedown然后ng-click时,我将mousedown事件加倍并且根本没有点击,但是当我先放ng-click然后ng-mousedown我加倍点击事件,没有mousedown。它可能是一个AngularJS错误,还是我错过了一些重要的东西?

1 个答案:

答案 0 :(得分:2)

所以,我最后会自己回复:这是因为Chrome的AngularJS Batarang扩展。

以下是相关问题:ng-mousedown handler attaching to ng-mouseup's event。但在我的情况下,只是从控制台禁用扩展并没有帮助我。后来我从设置中关闭了整个扩展,问题解决了。