javascript - AngularJs "on"事件监听器接收到 "broadcast"乱序发送的事件

标签 javascript angularjs angularjs-directive angularjs-scope

<div container="">
    <div sender="">
        <input type="text" ng-model="text" />
        <button ng-click="submit()">Send</button>
    </div>
    <div receiver="">{{text}}</div>
    <div activity-log="">
        <ul>
            <li data-ng-repeat="log in activities">
                {{log.state}}
            </li>
        </ul>
    </div>
</div>

从上面的 html 指令“sender”发出消息“1 send”到“container”。作为返回,它会广播它。指令“接收者”监听该广播并发出消息“2 ack”。 “container”也广播此消息。指令“activity-log”接收这两条消息。但它先接收“2 ack”,然后“1 send”,即使“容器”先广播“1 send”,然后“2 ack”。

这是为什么呢?是否可以确保它按正确的顺序接收。

这里是测试链接http://jsfiddle.net/wnsg9uzt/ 。比较控制台上的内容(容器接收到的事件)与屏幕上的内容(事件日志接收到的事件)。

最佳答案

如果将接收器 div 移到事件日志 div 下方,它似乎可以按要求工作。由于 $scopes 处于相同的层次结构级别,我猜测 Angular 会按 DOM 顺序处理它们。不过,使用 $rootScope 可能是一个更好的选择。

<div activity-log="">
    <ul>
        <li data-ng-repeat="log in activities">
            {{log.state}}
        </li>
    </ul>
</div>
<div receiver="">{{text}}</div>

关于javascript - AngularJs "on"事件监听器接收到 "broadcast"乱序发送的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30300942/

相关文章:

javascript - React/Redux 访问 Prop

javascript - AngularJS $http.post() 触发获取请求而不是发布

angularjs - Angular 路由/路径更改和范围问题

javascript - 对象在初始化时引用自己的属性

javascript - 关注 $window 打开的窗口

angularjs - 为 ng-model 解码 HTML 实体

javascript - 在 POST 之后处理从 Angular Controller 到指令的成功/错误 DOM 操作

javascript - 针对资源的 AngularJS 自定义验证

angularjs - 使用组件作为 $mdDialog 的内联模板

javascript - 避免在可重用组件中直接修改 prop