AngularJs-向单个控制器广播事件
AngularJs - Broadcast event to single controller
我有一个页面,其中有一个Lead列表,每个Lead都可以执行某些操作。每个操作都是一个表单,因此同一表单可以在同一页面上多次显示。
每种形式都有它自己的范围和它;自己的控制器实例。提交表单时,我调用一个服务来执行ajax操作,完成后我广播一条消息,并在控制器中收听该消息。问题是,表单的每个实例都有自己的控制器实例,每个表单都会触发偶数侦听器。我怎么能只为活动控制器调用它?这是一些样本代码:
服务:
/**
* Delegate downline submit
*/
delegatedDownlineSubmit(delegateDownLineModel: IDelegateDownLineModel) {
this.PostJson('/api/Lead/DelegateDownLine', delegateDownLineModel)
.success(function (response: IAjaxResponse) {
if (response !== null) {
LeadServices.rootScope.$broadcast('LeadService.DelegatedDownlineSubmitted', response);
}
});
}
控制器-为表单的每个实例调用一次:
delegateDownLineFormScope.$on('LeadService.DelegatedDownlineSubmitted', function (event: ng.IAngularEvent, ajaxResponse: IAjaxResponse) {
//Do stuff
});
我也试着只在范围内调用广播:
LeadServices.rootScope.BroadcastToElement('#Lead_123 form[name=DelegateDownLineForm]', 'LeadService.DelegatedDownlineSubmitted', response);
/**
* Broadcast a message to another element on the page
*/
scope.BroadcastToElement = function (selector: any, message: string, ...args: any[]) {
var broadcastArgs = [message];
if (args) {
broadcastArgs = broadcastArgs.concat(args);
}
return angular.element(selector).scope().$broadcast.apply(this, broadcastArgs);
};
提前感谢您的帮助。
基于
每种形式都有它自己的范围和它;自己的控制器实例。
和
我怎么能只为主动控制器调用这个
解决方案
如何确定active controller
?如果它类似于active = true
,请在偶数侦听器中使用它:
delegateDownLineFormScope.$on('LeadService.DelegatedDownlineSubmitted', (event: ng.IAngularEvent, ajaxResponse: IAjaxResponse) => {
if(this.active){
//Do stuff
}
});
另外请注意,我使用的是箭头(=>
)函数。
相关文章:
- 推送器:无法广播客户端事件
- AngularJS:在rootScope上广播/发出的事件多次发生
- 什么'是在AngularJS中处理应用程序状态和事件广播的最佳实践
- AngularJs-向单个控制器广播事件
- AngularJS:只将事件从父级广播给它的子级
- angular js,广播一个事件并等待它完成
- 如何将 AngularJS 事件重新广播到子范围
- 广播事件-工作良好的服务器端,但不是在客户端
- 事件广播到特定用户(套接字).Io, redis, node)
- 监听来自指令内控制器的广播事件
- 如何广播事件到一个元素从rootScope在聚合物
- 如何取消注册或销毁$广播事件
- 使用d3.在d3组件之间调度广播事件
- AngularJs 广播事件
- AngularJS 1.5中的组件不监听$scope中的广播事件
- 角度 - 没有 HTML 和广播事件的控制器
- 如何在JavaScript(或jQuery)中实现自定义广播事件
- AngularJS:如何避免-从app.js调用的广播事件被触发两次
- AngularJS - 在广播事件后更新指令的视图
- 监听angularjs以非angular的方式广播事件