angularjs跨window controller互操作的方法

本文介绍了一种使用Angular模块和jQuery事件绑定在不同窗口间实现交互的技术,包括跨域窗口触发事件的方法和详细代码实现。

项目中有跨window的相互交互的场景,不适合用模态窗口做。通过指令很容易满足该需求。

具体思路:在window1的一个element上使用jquery的事件绑定,在指令里回调scope的属性或方法。

window2就在需要回调的方法里去触发window1的element的事件。

 

具体实现代码如下:

 

define(function(require){
	var moduleName = 'ng.ext.trigger-bridge';
	return {
		init: function(){
			window.console.log('Begin init module ' + moduleName);
			if(angular.isModuleExists && angular.isModuleExists(moduleName)){
				window.console.log('Module already exists!' + moduleName);
				return;
			}

			var md = angular.module(moduleName, []);

			md.factory('extTriggerBridgeService', function(){
				return {
					trigger: function(el, type, field, data){
						el.trigger(type || 'scopeChange', [field, data]);
					}, 

					triggerInWindow: function(win, elementId, type, field, data){
						// cross window, use jquery not jqLite in global
						if(win && win.$){
							var elDom = win.document.getElementById(elementId);
							win.$(elDom).trigger(type || 'scopeChange', [field, data]);
						}
					}
				};
			});

			// *** *** *** *** *** *** *** *** *** ***
			// *** *** *** *** *** *** *** *** *** ***
			md.directive('extTriggerBridge', ['$parse', function($parse){
				'use strict';

				return {
					restrict: 'A',

// begin link ***
link: function(scope, el, attrs, ctrl){
	var opts = scope.$eval(attrs.extTriggerBridge) || {};
	console.log('Init extTriggerBridge - ' + JSON.stringify(opts));

	el.bind(opts.eventType || 'scopeChange', function(e, field, data){
		console.log('Trigger : '  + JSON.stringify(opts) + ' - ' + 
			field + 
			' - ' + 
			JSON.stringify(data));
		if(opts.setData){
			// set data
			if(data){
				var getter = $parse(field);
				var setter = getter.assign;

				var oldVal = getter(scope) || {};
				angular.extend(oldVal, data);
				scope.$apply(function(){
					setter(scope, oldVal);
				});
			}
		}else if(opts.callFn){
			// call function
			var fnTarget = $parse(field)(scope);
			if(!fnTarget || !angular.isFunction(fnTarget)){
				console.log('No function defined : ' + field);
			}else{
				scope.$apply(function(){
					fnTarget(data);
				});
			}
		}else{
			// emit event
			var eventName = field;
			scope.$apply(function(){
				scope.$emit(eventName, data);
			});
		}
	}); 
}
// end link ***

				}; // end link
			}]); // end directive
		} // end init
	};
});

 

 

【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Python代码实现)内容概要:本文介绍了基于CNN-LSTM神经网络模型的轴承故障分类方法,利用PyTorch框架实现,采用西储大学(Case Western Reserve University)公开的轴承故障数据集进行实验验证。该方法结合卷积神经网络(CNN)强大的特征提取能力和长短期记忆网络(LSTM)对时序数据的建模优势,实现对轴承不同故障类型和严重程度的高精度分类。文中详细阐述了数据预处理、模型构建、训练流程及结果分析过程,并提供了完整的Python代码实现,属于典型的工业设备故障诊断领域深度学习应用研究。; 适合人群:具备Python编程基础和深度学习基础知识的高校学生、科研人员及工业界从事设备状态监测与故障诊断的工程师,尤其适合正在开展相关课题研究或希望复现EI级别论文成果的研究者。; 使用场景及目标:① 学习如何使用PyTorch搭建CNN-LSTM混合模型进行时间序列分类;② 掌握轴承振动信号的预处理与特征学习方法;③ 复现并改进基于公开数据集的故障诊断模型,用于学术论文撰写或实际工业场景验证; 阅读建议:建议读者结合提供的代码逐行理解模型实现细节,重点关注数据加载、滑动窗口处理、网络结构设计及训练策略部分,鼓励在原有基础上尝试不同的网络结构或优化算法以提升分类性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值