gpt4 book ai didi

broadcast - AngularJS 可以为单个 $broadcast 多次调用 $on 方法吗?

转载 作者:行者123 更新时间:2023-12-04 01:40:10 25 4
gpt4 key购买 nike

我在我的 AngularJS 应用程序中看到了一些非常奇怪的行为。

制作单个 $broadcast 时,(唯一的)接收器会被触发两次。

对整个应用程序的影响就好像接收器只被触发了一次。 (即只有一件元素被添加到购物篮中)。

如果您触发 $broadcast 两次(即在触发 $broadcast 的按钮上单击两次),您将执行四次接收器,但有两个项目正确添加到篮子中。

这里有一些类似电子表格的重新计算吗? $scope 函数不需要影响“普通”javascript 变量吗?

我的问题是我添加了 alert它被显示了两次。

我在调试这个方面做了更多的工作:

我添加了一个计数器来计算接收到广播的次数。

如果范围(没有美元)是全局性的,我会得到加倍的结果。如果它的作用域是 Ctlr 函数的本地范围,我会得到一个非加倍的结果。

我能以某种方式创建我的 Controller 的两个实例吗?

我可以从 Firebug 看到,从 Controller 完成的 $http ajax 请求只发生一次,所以我很困惑。

最佳答案

我将首先在 Controller 的主体中添加一个 console.log 语句,以查看它被初始化了多少次。 Controller 的生命周期可能很短,因为它们与可以频繁创建和销毁的 DOM 元素相关联。

如果您使用 $routeProvider,您是否为“ Controller ”属性指定了一个值?如果是这样,您是否还使用“ng-controller”属性在部分中指定相同的 Controller ?您真的想选择一个,而不是两者,否则每次导航到该路线时都会创建两个 Controller 实例。

关于broadcast - AngularJS 可以为单个 $broadcast 多次调用 $on 方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11591902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com