问题标签 [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.
angularjs - 广播和不按预期工作
我正在尝试从 1 个控制器进行广播,并在另一个控制器上观察该变量,并期望在第二个控制器上进行一些更改。但它不起作用。
下面是第一个控制器代码
下面是第二个控制器代码,即 /kb 页面
我需要明确做什么才能使其生效。
angularjs - 与未明确定义的兄弟控制器通信
你好我有以下情况
我有一个带有方法的控制器,它设置超时并调用模式以及其他操作:
我希望能够从应用程序中的任何其他控制器访问该特定的showModal()方法
所以我有以下选择
$emit(名称,参数);
通过范围层次结构向上调度事件名称,通知已注册的 $rootScope.Scope 侦听器。
使用$emit
我必须将其定义GlobalController
为父级,因为它的“向上”
和:
$广播(名称,参数);
向下调度事件名称到所有子作用域(及其子作用域),通知已注册的 $rootScope.Scope 侦听器。
对于这些解决方案中的任何一个,我必须在应用程序中明确定义控制器(我的意思是在视图上)才能将其用作父级或子级,有没有办法做到这一点,(即使它不是控制器) ?
javascript - AngularJS:仅从父级向其子级广播事件
我想将事件从父指令广播到子指令。但是,如果我在父指令链接函数中使用 scope.broadcast,那么每个“父”指令中的所有子代都会收到它。
现在如何工作: 如果父 (1) 广播事件,则子 (1.1) 和 (2.1) 接收事件。
我希望它如何工作: 我只想将事件从父 (1) 广播到子 (1.1),而不是子 (2.1)。
我的指令检查元素是否在屏幕上。我只想要一个这样的指令,并且只有这个指令应该将事件发送给其他人。
javascript - 如何从主控制器发出数据以角度查看控制器?
我想以角度创建一个应用程序。
我有视图之外的主控制器和用于视图的特定控制器。
如何将数据从主控制器发送到视图的控制器(主控制器)?
从主控制器发出数据后,我想在视图控制器中执行该功能。
我试过使用 -$emit
但$on
在我的情况下它不起作用。
我的代码例如: https ://jsfiddle.net/32hb3odk/7/
索引.html
Javascript:
javascript - $scope 传递有延迟
我正在为多种目的构建一个 Angular 弹出系统。它的工作方式是我有一个指令,称为bitPopup
将三个变量传递给 (type
和action
) data
,如下所示:
索引.html
popup.js
然后弹出控制器根据类型加载不同的指令:
popup.html (上面显示的 HTML 模板)
false_positives.js (包含bitFalsePositivePopup
指令)
然后该bitFalsePositivePopup
指令的 html 模板显示来自data
.
现在我触发弹出窗口的方式如下:
- 从包含指令的指令内的模板中,我
bitPopup
将更改$scope.popup
'stype
和.action
data
- 我会去做的
$scope.$broadcast('showPopup');
- 该
bitPopup
指令将做出反应$scope.$on('showPopup', [...]});
,并使弹出窗口可见。
现在这个非常奇怪的事情发生在它第一次尝试的地方(弹出窗口打开并显示正确的data
信息),但在第一次尝试后它会显示data
上一次尝试的结果。
现在更奇怪的是,我尝试在第一次尝试时记录信息,而我发现:
$scope.popup
在index.html调用之前$scope.$broadcast('showPopup');
显示正确的信息。$scope.data
在bitPopup
指令显示null
$scope.data
atbitFalsePositivePopup
指令显示正确的信息。
第二次尝试:
$scope.popup
在index.html再次正确。$scope.data
atbitPopup
指令显示上一次尝试的信息bitFalsePositivePopup
指令也是如此。
另一个奇怪的事情是,当我使用$scope.$apply()
它时它确实工作正常,只有它显示$apply already in progress
错误。我知道我不应该$scope.$apply()
在这种情况下使用,因为它都是 Angular 事件。但是传递的范围怎么可能总是落后一步呢?
我一开始是不是做错了什么?
编辑:
由于amahfouz 的回答,我决定发布更多代码以进行澄清。我省略了一些不重要的细节,以便更清楚地阅读。
索引.html
index.js
popup.html
popup.js
false_positives.js
javascript - 在AngularJS中使用$broadcast和Service将数据分配给指令
我正在迁移到基于 Angular 的前端。JavaScript
在一些研究发现使用Service
并且$broadcast
可能是一个很好的解决方案之后,我有一个函数可以将一些数据传递给指令。但对我不起作用...
这是我的代码:
将数据传递给服务的代码:
ng
问题1:里面有什么.injector(['ng' ,'app'])
问题2:此时控制台只显示-- $broadcast
。我的代码无法在指令中捕获事件的问题是什么
angularjs - $rootScope.$broadcast 不工作
我正在尝试让 $rootScope.$broadcast 刷新我的视图。该服务是-
通过控制器调用-
在此控制器sharedService.passData
中,它将新数组传递给服务方法。然后它试图用这条线来广播它的变化—— $rootScope.$broadcast('dataPassed', newData)
我不知道为什么它不广播要查看的更改。有没有其他方法可以广播更改?
注意- 我之前的问题如何在控制器之间传输数据无法为我提供任何帮助。
编辑
到目前为止,我已经改变了听众——
但仍然无法刷新视图。
angularjs - 在指令中测试 .on 预期 spy got 功能
我正在尝试通过 .on 在我的指令中从 $broadcast(来自控制器)测试接收器。
指示:
有了上面,我得到错误:
angularjs - 如何使用 $scope 收听 $rootscope.$broadcast
我的$scope.$on(...
似乎没有接听广播。
我有一个拦截器来捕获 http 响应错误并广播我的主控制器可以响应的事件。
在我的应用程序中,我故意向 API 提交一些无效数据并返回 http 400。
我可以在 Chrome 开发者工具中看到$rootScope.$broadcast('client_error', rejection);
被击中。
问题是这没有受到打击:
范围已加载。为什么它对广播没有反应?
angularjs - 如何在两个地方设置相同的广播
我有一段代码需要在执行其他一些代码后调用。我正在使用broadcast
这个。我需要从 2 个不同的地方调用相同的代码。现在这对我不起作用。我的代码是
广播 1
上
我还需要从其他地方调用此代码
所以我scope.$broadcast('selOrdLine', ordline);
也放在那里。但它正在返回错误。
编辑
第二次使用时,我正在使用循环broadcast
制作ordline
数据。angular.forEach
所以我$q
只在数据像这样准备好之后才用于运行广播
错误是,broadcast
被多次调用。但是当我使用$q
它时,它应该只在设置订单数据后运行,对吗?