Files
fc/dev/project/assets/Scripts/nx/plugin/nx.plugin.view.binder.js
T
2026-05-23 22:10:14 +08:00

85 lines
1.6 KiB
JavaScript

/*******************************************************************************
*
* 代理: 视图监听
*
*
*
* 2021.12.10
******************************************************************************/
// 功能安装
const install = function( _inst ) {
// 对象非法
if( nx.dt.objEmpty( _inst ) ) {
nx.error( "[视图监听插件]安装失败,对象非法!" );
return false;
}
// 重复安装
if( nx.dt.arrGood( _inst.lstView ) ) {
nx.error( "[视图监听插件]安装失败,重复安装!" );
return false;
}
// 安装
_inst.lstView = [];
// 视图监听
nx.dt.fnEmptyError( _inst.bindView );
_inst.bindView = function( _agent, _list ) {
// 重复监听
let map = _inst.lstView[_agent.vid];
if( nx.dt.arrNEmpty( map ) ) {
nx.error( "[视图监听插件]重复监听:" + _agent.vid );
return;
}
// 添加
_inst.lstView[_agent.vid] = _agent;
_agent.vbind( _inst, _list );
};
// 视图监听全解除
nx.dt.fnEmptyError( _inst.unbindViews );
_inst.unbindViews = function() {
for( let vid in _inst.lstView ) {
let vw = _inst.lstView[vid];
if( vw ) {
vw.vunbind( _inst );
}
}
_inst.lstView = {};
};
return true;
};
// 功能卸载
const uninstall = function( _inst ) {
// 对象非法
if( nx.dt.objEmpty( _inst ) ) {
nx.error( "[视图监听插件]安装视图插件失败,对象非法!" );
return false;
}
// 取消监听
_inst.unbindViews();
// 卸载
delete _inst.lstView;
delete _inst.bindView;
delete _inst.unbindViews;
return true;
};
module.exports = { install, uninstall };