Files
fc/dev/project/library/imports/8b/8b5044f7-7b1d-4c12-98e8-1339bbffe9cb.js
T

240 lines
5.6 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"use strict";
cc._RF.push(module, '8b504T3ex1MEpjoEzm7/+nL', 'nx.plugin.view');
// Scripts/nx/plugin/nx.plugin.view.js
"use strict";
/*******************************************************************************
*
* 代理: 视图
*
*
*
* 2021.12.10
******************************************************************************/
// 功能安装
var install = function install(_inst) {
// 对象非法
if (nx.dt.objEmpty(_inst)) {
nx.error("[视图插件]安装失败,对象非法!");
return false;
}
// 重复安装
if (nx.dt.arrGood(_inst.vv_binders)) {
nx.error("[视图插件]安装失败,重复安装!");
return false;
}
// 安装
_inst.vid = "";
_inst.vv_binders = [];
_inst.vv_configs = null;
// 视图创建
nx.dt.fnEmptyError(_inst.vbuild);
_inst.vbuild = function (_ifos) {
// 重复初始化
if (nx.dt.strNEmpty(_inst.vid)) {
nx.error("[视图插件]重复创建:" + _inst.vid);
return false;
}
// 视图注册
if (!nx.views.queryModel(_ifos.Name, false)) {
nx.views.regModel(_ifos.Name, _ifos.Model, _ifos.Single);
}
// 视图创建
_inst.vid = nx.views.buildView(_ifos.Name, _ifos.Model);
// VBD关联
if (_ifos.VBD) {
nx.views.regBindTarget(_ifos.Name, _inst);
}
_inst.vv_configs = _ifos;
return true;
};
// 附着
nx.dt.fnEmptyError(_inst.vattach);
_inst.vattach = function (_vname) {
// 查询视图
var view = nx.views.queryView(_vname);
if (!view) {
return false;
}
_inst.vid = view.vid;
_inst.vv_configs = null;
return true;
};
// 重置
nx.dt.fnEmptyError(_inst.vreset);
_inst.vreset = function (_vmodel, _clean) {
return nx.views.resetView(_inst.vid, _vmodel, _clean);
};
// 获取
nx.dt.fnEmptyError(_inst.vget);
_inst.vget = function (_vk, _def) {
return nx.views.getData(_inst.vid, _vk, _def);
};
// 获取老值
nx.dt.fnEmptyError(_inst.vgetOld);
_inst.vgetOld = function (_vk, _def) {
return nx.views.getOldData(_inst.vid, _vk, _def);
};
// 设置
nx.dt.fnEmptyError(_inst.vset);
_inst.vset = function (_vk, _value, _notify) {
return nx.views.setData(_inst.vid, _vk, _value, _notify);
};
// 批量设置
nx.dt.fnEmptyError(_inst.vsetBatch);
_inst.vsetBatch = function (_vpairs) {
return nx.views.setDataBatch(_inst.vid, _vpairs);
};
// 批量更新
nx.dt.fnEmptyError(_inst.vupdBatch);
_inst.vupdBatch = function (_data, _notify) {
for (var k in _data) {
_inst.vset(k, _data[k], _notify);
}
};
// 通知
nx.dt.fnEmptyError(_inst.vnotify);
_inst.vnotify = function (_vk) {
var v = nx.views.queryView(_inst.vid);
if (v) {
v.vnotify(_vk);
}
};
// 绑定
nx.dt.fnEmptyError(_inst.vbind);
_inst.vbind = function (_binder, _lst) {
// 无效编号
if (nx.dt.strEmpty(_inst.vid)) {
nx.error("[视图插件]无效的视图编号!");
return false;
}
var uuid = nx.factory.getUUID(_binder, true);
if (!nx.dt.arrMember(_inst.vv_binders, uuid)) {
_inst.vv_binders.push(uuid);
}
return nx.views.bindView(_inst.vid, uuid, _lst);
};
// 解绑
nx.dt.fnEmptyError(_inst.vunbind);
_inst.vunbind = function (_binder) {
if (window.nx) {
// 无效编号
if (nx.dt.strEmpty(_inst.vid)) {
nx.error("[视图插件]无效的视图编号!");
return false;
}
var uuid = nx.factory.getUUID(_binder, true);
for (var i in _inst.vv_binders) {
if (_inst.vv_binders[i] == uuid) {
_inst.vv_binders.splice(i, 1);
break;
}
}
return nx.views.unbindView(_inst.vid, uuid);
}
};
// 视图销毁
nx.dt.fnEmptyError(_inst.vclean);
_inst.vclean = function () {
// 单例视图解除通过该代理尚未解绑的监听者
for (var i in _inst.vv_binders) {
var bdname = _inst.vv_binders[i];
nx.views.unbindView(_inst.vid, bdname);
cc.warn("[代理]视图代理:残留未解绑驱动器清理: %d %s", _inst.vid, bdname);
}
// 只是附着,简单解除即可
if (!_inst.vv_configs) {
_inst.vid = "";
return;
}
// 负责收尾
// VBD关联解除
if (_inst.vv_configs.VBD) {
nx.views.unregBindTarget(_inst.vv_configs.Name);
}
// 视图删除 && 注销
nx.views.delView(_inst.vid);
nx.views.unregModel(_inst.vv_configs.Name);
_inst.vv_configs = null;
};
// 视图对象化
nx.dt.fnEmptyError(_inst.vtoObject);
_inst.vtoObject = function () {
return nx.views.toObject(_inst.vid);
};
// 视图对象化更新
nx.dt.fnEmptyError(_inst.vfromObject);
_inst.vfromObject = function (_obj) {
return nx.views.fromObject(_inst.vid, _obj);
};
// 视图打印
nx.dt.fnEmptyError(_inst.vdump);
_inst.vdump = function (_tform) {
return nx.views.dumpView(_inst.vid, _tform);
};
return true;
};
// 功能卸载
var uninstall = function uninstall(_inst) {
// 对象非法
if (nx.dt.objEmpty(_inst)) {
nx.error("[视图插件]安装视图插件失败,对象非法!");
return false;
}
// 视图清理
_inst.vclean();
// 卸载
delete _inst.vbuild;
delete _inst.vattach;
delete _inst.vreset;
delete _inst.vget;
delete _inst.vset;
delete _inst.vsetBatch;
delete _inst.vupdBatch;
delete _inst.vnotify;
delete _inst.vbind;
delete _inst.vunbind;
delete _inst.vclean;
delete _inst.vtoObject;
delete _inst.vfromObject;
delete _inst.vdump;
delete _inst.vv_binders;
delete _inst.vv_configs;
delete _inst.vid;
return true;
};
module.exports = {
install: install,
uninstall: uninstall
};
cc._RF.pop();