问题标签 [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 投票
2 回答
43 浏览

angularjs - 广播和不按预期工作

我正在尝试从 1 个控制器进行广播,并在另一个控制器上观察该变量,并期望在第二个控制器上进行一些更改。但它不起作用。

下面是第一个控制器代码

下面是第二个控制器代码,即 /kb 页面

我需要明确做什么才能使其生效。

0 投票
0 回答
790 浏览

angularjs - 与未明确定义的兄弟控制器通信

你好我有以下情况

我有一个带有方法的控制器,它设置超时并调用模式以及其他操作:

我希望能够从应用程序中的任何其他控制器访问该特定的showModal()方法

所以我有以下选择

$emit(名称,参数);

通过范围层次结构向上调度事件名称,通知已注册的 $rootScope.Scope 侦听器。

使用$emit我必须将其定义GlobalController为父级,因为它的“向上”

和:

$广播(名称,参数);

向下调度事件名称到所有子作用域(及其子作用域),通知已注册的 $rootScope.Scope 侦听器。

对于这些解决方案中的任何一个,我必须在应用程序中明确定义控制器(我的意思是在视图上)才能将其用作父级或子级,有没有办法做到这一点,(即使它不是控制器) ?

0 投票
2 回答
6149 浏览

javascript - AngularJS:仅从父级向其子级广播事件

我想将事件从父指令广播到子指令。但是,如果我在父指令链接函数中使用 scope.broadcast,那么每个“父”指令中的所有子代都会收到它。

现在如何工作: 如果父 (1) 广播事件,则子 (1.1) 和 (2.1) 接收事件。

我希望它如何工作: 我只想将事件从父 (1) 广播到子 (1.1),而不是子 (2.1)。

我的指令检查元素是否在屏幕上。我只想要一个这样的指令,并且只有这个指令应该将事件发送给其他人。

0 投票
1 回答
256 浏览

javascript - 如何从主控制器发出数据以角度查看控制器?

我想以角度创建一个应用程序。

我有视图之外的主控制器和用于视图的特定控制器。

如何将数据从主控制器发送到视图的控制器(主控制器)?

从主控制器发出数据后,我想在视图控制器中执行该功能。

我试过使用 -$emit$on在我的情况下它不起作用。

我的代码例如: https ://jsfiddle.net/32hb3odk/7/

索引.html

Javascript:

0 投票
2 回答
269 浏览

javascript - $scope 传递有延迟

我正在为多种目的构建一个 Angular 弹出系统。它的工作方式是我有一个指令,称为bitPopup将三个变量传递给 (typeaction) data,如下所示:

索引.html

popup.js

然后弹出控制器根据类型加载不同的指令:

popup.html (上面显示的 HTML 模板)

false_positives.js (包含bitFalsePositivePopup指令)

然后该bitFalsePositivePopup指令的 html 模板显示来自data.

现在我触发弹出窗口的方式如下:

  1. 从包含指令的指令内的模板中,我bitPopup将更改$scope.popup'stype和.actiondata
  2. 我会去做的$scope.$broadcast('showPopup');
  3. bitPopup指令将做出反应$scope.$on('showPopup', [...]});,并使弹出窗口可见。

现在这个非常奇怪的事情发生在它第一次尝试的地方(弹出窗口打开并显示正确的data信息),但在第一次尝试后它会显示data上一次尝试的结果。

现在更奇怪的是,我尝试在第一次尝试时记录信息,而我发现:

  • $scope.popupindex.html调用之前$scope.$broadcast('showPopup');显示正确的信息。
  • $scope.databitPopup指令显示null
  • $scope.dataatbitFalsePositivePopup指令显示正确的信息。

第二次尝试:

  • $scope.popupindex.html再次正确。
  • $scope.dataatbitPopup指令显示上一次尝试的信息
  • bitFalsePositivePopup指令也是如此。

另一个奇怪的事情是,当我使用$scope.$apply()它时它确实工作正常,只有它显示$apply already in progress错误。我知道我不应该$scope.$apply()在这种情况下使用,因为它都是 Angular 事件。但是传递的范围怎么可能总是落后一步呢?

我一开始是不是做错了什么?

编辑:

由于amahfouz 的回答,我决定发布更多代码以进行澄清。我省略了一些不重要的细节,以便更清楚地阅读。

索引.html

index.js

popup.html

popup.js

false_positives.js

0 投票
3 回答
800 浏览

javascript - 在AngularJS中使用$broadcast和Service将数据分配给指令

我正在迁移到基于 Angular 的前端。JavaScript在一些研究发现使用Service并且$broadcast可能是一个很好的解决方案之后,我有一个函数可以将一些数据传递给指令。但对我不起作用...

这是我的代码:

将数据传递给服务的代码:

ng问题1:里面有什么.injector(['ng' ,'app'])

问题2:此时控制台只显示-- $broadcast。我的代码无法在指令中捕获事件的问题是什么

jsfiddle

0 投票
5 回答
12720 浏览

angularjs - $rootScope.$broadcast 不工作

我正在尝试让 $rootScope.$broadcast 刷新我的视图。该服务是-

通过控制器调用-

在此控制器sharedService.passData中,它将新数组传递给服务方法。然后它试图用这条线来广播它的变化—— $rootScope.$broadcast('dataPassed', newData)

我不知道为什么它不广播要查看的更改。有没有其他方法可以广播更改?

注意- 我之前的问题如何在控制器之间传输数据无法为我提供任何帮助。

编辑

到目前为止,我已经改变了听众——

但仍然无法刷新视图。

0 投票
1 回答
558 浏览

angularjs - 在指令中测试 .on 预期 spy got 功能

我正在尝试通过 .on 在我的指令中从 $broadcast(来自控制器)测试接收器。

指示:

有了上面,我得到错误:

0 投票
1 回答
1223 浏览

angularjs - 如何使用 $scope 收听 $rootscope.$broadcast

我的$scope.$on(...似乎没有接听广播。

我有一个拦截器来捕获 http 响应错误并广播我的主控制器可以响应的事件。

在我的应用程序中,我故意向 API 提交一些无效数据并返回 http 400。

我可以在 Chrome 开发者工具中看到$rootScope.$broadcast('client_error', rejection);被击中。

问题是这没有受到打击:

范围已加载。为什么它对广播没有反应?

0 投票
0 回答
38 浏览

angularjs - 如何在两个地方设置相同的广播

我有一段代码需要在执行其他一些代码后调用。我正在使用broadcast这个。我需要从 2 个不同的地方调用相同的代码。现在这对我不起作用。我的代码是

广播 1

我还需要从其他地方调用此代码

所以我scope.$broadcast('selOrdLine', ordline);也放在那里。但它正在返回错误。

编辑

第二次使用时,我正在使用循环broadcast制作ordline数据。angular.forEach所以我$q只在数据像这样准备好之后才用于运行广播

错误是,broadcast被多次调用。但是当我使用$q它时,它应该只在设置订单数据后运行,对吗?