[AngularJS]为什么是 '对' 不按顺序在角处理程序调用的序列?

发布时间: 2017/4/16 18:29:50
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这里是我的代码

    function linkFunc(scope, element, attr){
        var clickedElsewhere = false;

        $document.on('click', function(){
            clickedElsewhere = false;
            console.log('inside document');

        });

        element.on('click', function(){
            clickedElsewhere = true;
            console.log('inside element');
        });

    }

我想上我的元素之外我元素 vs 点击检测。

当我点击我的元素在这里是结果

`clickedElseWhere = false`

控制台输出

inside element
inside document

当我点击这里我元素之外是结果

`clickedElseWhere = false`

控制台输出

inside document

这种行为为什么发生的呢?

解决方法 1:

这是 dom 事件是如何工作的他们中向上冒泡,您的元素是在文档中。如果你想要停止冒泡 (传播) 你必须告诉它太︰

    element.on('click', function(event){
        event.stopPropagation();
        clickedElsewhere = true;
        console.log('inside element');
    });

这将使它,以便您的文档事件不火。

官方微信
官方QQ群
31647020