问题标签 [angular-broadcast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
323 浏览

javascript - 角度广播事件导致侦听器执行两次

我在广播事件的服务中有一个方法,并且一个控制器已经订阅了它。

当广播发生时,订阅者处理程序执行两次。下面是设置:

我无法纠正原因。有没有其他的东西可以有所作为。谢谢。

0 投票
2 回答
5398 浏览

angularjs - Angular - 广播,$on 在指令中多次调用

我正在开发一个带有角度的单页应用程序,我需要在两个不同的指令之间进行通信,这些指令基本上没有父子关系。

在指令 A 中,我有 2 个地方需要从不同的功能广播相同的事件。在指令 B 中,为此编写了一个 $on 监听器。

现在,我观察到只要 callFirstFunc 及其广播第一次被调用,监听器就会被调用一次。在随后的调用中,监听器被调用两次,三次等等,它不断增加。

callSecondFunc 在 callFirstFunc 被执行时被调用,所以这个监听器也被称为尽可能多的 no。callFirstFunc 中广播的监听器次数。那么,为什么监听器不是只调用一次,为什么是多次呢?它每次都在循环和增加。

指令 A:

指令 B:

0 投票
1 回答
755 浏览

angularjs - 如何以没有父子关系的角度向其他控制器广播和发出事件

我试图从这篇文章中获得提示 -使用 $scope.$emit 和 $scope.$on 但是当控制器之间没有任何关系时似乎没有任何效果。

那是 -

在 CtrlB 我会做这样的事情:

在 CtrlA 我会这样听:

不 - CtrlA 永远不会收到广播事件,除非我将 CtrlB div 嵌套在 CtrlA div 中

任何想法?

0 投票
1 回答
1067 浏览

javascript - $broadcast 后 AngularJS 不更新视图

我知道我不是第一个遇到这个问题的人,但这里没有解决方案帮助我解决它。

我有两个控制器 ShowController 和 CreateController。我想从 ShowController 广播并在 CreateCrontroller 中接收。为此,我使用了 BroadcastService。一切都按预期工作。由于单击事件,ShowController 将数据保存到广播事件的服务中,而 CreateController 接收事件和数据。取决于数据,我想激活一个选项卡,即由 CreateController 启动的视图。在 on-method 中设置 $scope 变量后,它们会发生变化,但视图不会自行更新。

我试图将 $broadcast 以及 $on 方法包装在 $timestamp 中以强制 $apply。在设置了 $scope 变量后,我还尝试了 $apply,并尝试在 $apply 中的匿名函数中设置 $scope 变量。这些解决方案都不适合我。我显然错过了一些东西。

编辑附加 的小提琴正在工作,但没有问题。两个控制器都有一个父控制器。如果我$scope在子控制器中检查,则添加新数据,但如果我检查父控制器$$childTail,则子数据未更改。所以广播工作。问题出在控制器结构或范围继承中。

为什么即使变量没有在父控制器中初始化和更改,视图也会监听父控制器?

编辑 2 就我试图定位问题而言,我认为我发现了一个问题。如果我尝试从显示控制器广播到创建控制器。创建控制器尚未初始化。在我第二次尝试之后,广播工作。但是视图中的变量仍然没有改变!请参阅此工作plnkr以分析问题。我尝试通过广播将变量从节目更改为创建控制器。如果您检查创建控制器中的范围,变量会更改,但在父范围中它没有。

0 投票
3 回答
21401 浏览

angularjs - 从angularjs中的服务调用控制器函数

我正在使用 socket.io 在我的应用程序中启用聊天,并且我正在使用服务SocketService来执行所有套接字内容。当收到消息时,我想从服务中触发控制器的功能以SocketService在 UI 中进行一些更改。所以我想知道如何从服务中访问控制器的功能。示例代码:

这是服务的示例代码。

现在是控制器的代码

0 投票
3 回答
1564 浏览

angularjs - angularjs $broadcast 不反映视图中的值

当我在 $rootScope 中添加一个 $broadcast 并将其捕获到其他控制器时,它没有反映任何要查看的值。例子:

当我在上使用MyFunc功能时firstCtrl,它会将我重定向到用户页面,同时广播功能运行。在用户页面上,我$scope.callOnBroadcast()在广播打开时使用,但即使我使用它也反映了视图页面上的任何更改$scope.$apply()。我哪里错了?

0 投票
1 回答
265 浏览

javascript - AngularJS 广播

我有一个需要向子控制器广播的刷新功能。我在父控制器中做了这样的事情:

在子控制器中:

它应该在“取消”按钮上激活。我有一个错误:

“$scope.OnGridBODRefresh 不是函数”

在控制台中。有人知道吗?

这是我的控制器和视图之间的链接:

0 投票
2 回答
182 浏览

angularjs - 从未收到 angularjs 广播

我有两个注入器,一个范围的事件永远不会到达另一个范围,即使它们应该是相同的范围......

http://jsfiddle.net/rkLzww3t/

更新

我的主要目标是了解谷歌地图何时加载和初始化......

一切正常,直到"about to init"永远不会登录到控制台并且 api 没有设置

0 投票
3 回答
511 浏览

javascript - 自定义Angular指令广播事件但不向嵌套子级广播?

我在 Angular 中创建了一个可以嵌套的手风琴指令,因此手风琴可以在其中包含子手风琴。

我想在手风琴打开和关闭时广播一个事件,以便其他指令可以监听它(例如,手风琴面板内的菜单可能会在打开手风琴面板时显示自己)。

问题是,如果在外部手风琴内部有一个嵌套的内部手风琴,我不希望将事件广播到内部手风琴的子元素,因为内部手风琴没有广播打开/关闭事件。

以防万一这没有意义,换句话说,嵌套手风琴内的元素应该能够收听它所在的手风琴广播的打开/关闭事件,而不是 DOM 树上更远的那个。

希望有一个简单的解决方案。

更新:在此处添加演示:http: //jsfiddle.net/jonhobbs/xr1kLqba/

我显然没有正确理解 $broadcast 和 $on ,因为演示活动目前根本不起作用,但应该清楚我想要做什么!

编辑:显然所有到 jsfiddle 的链接都必须附有代码,所以这里有一些。

0 投票
1 回答
1175 浏览

angularjs - 单元测试 angularjs 指令的事件广播

我以前从未测试过我的 angularjs 指令,我为当前公司编写的指令也是使用事件将指令传达给指令和服务。

所以我写了一个指令,例如一个搜索指令。

该指令广播"searchbox-valuechanged"事件和密钥,现在我必须为它编写测试。

更新 输入的变化,

它调用指令控制器中的方法

如何测试广播?