Instance 实例管理
简介
在AXUI运行当中会产生诸多的实例,对于各种类别的实例我们需要统一管理,在AXUI下是通过axInstance插件进行实例管理的。通过axInstance的内置变量和操作方法可对实例进行合并、获取、销毁和初始化操作。
this.data变量
该变量是axInstance的内置变量,是对象数组格式,包含了合并的实例名、类型、实例本身和操作标记,其每一项的属性说明如下:
- name:实例名,字符串格式,来自实例的insName参数,可能为空
- instance:实例本身,对象格式
- type:实例类型,字符串格式,类型跟随实例类名;如果合并的是axPopup实例,那么type则为'popup';axTree实例则type为'tree',可以举一反三
- log:该项操作标记或者叫日志,字符串格式,由动作和操作日期构成
this.push()方法
该方法可合并实例到实例合集,支持三个参数,说明如下:
- instance:将要合并的实例本身,必填项
- name:实例名称,可以为空
- type:实例类型,可以为空
this.find()方法
该方法可通过name名查找到某一个实例,返回最多一个实例对象,支持三个参数,说明如下:
- name:实例名称,必填项
- type:实例类型,选填项,如果填写了表示从这一类中查找实例
- destroyed:是否为销毁状态,默认为false即查找未销毁的实例
this.findAll()方法
该方法可通过类别查找到某一类实例,返回实例数组,支持两个参数,说明如下:
- type:实例类型,必填项,如果为空或未填则表示查找所有实例
- destroyed:是否为销毁状态,默认为false即查找未销毁的实例
this.destroy()方法
该方法可通过name名找到并销毁某一个实例,支持三个参数,说明如下:
- name:实例名称,必填项
- type:实例类型,选填项,如果填写了表示从这一类中查找实例
- callback:回调函数,销毁后执行,支持一个参数即将销毁的实例对象
this.destroyAll()方法
该方法可通过类别查找到某一类实例并销毁他们,支持两个参数,说明如下:
- type:实例类型,必填项,如果为空或未填则表示查找所有实例
- callback:回调函数,销毁后执行,支持一个参数即将销毁的实例对象数组
this.clear()方法
该方法可销毁合集中所有实例并清空合集数组,支持一个参数,说明如下:
- callback:回调函数,清空后执行,无参数
注意:使用该方法可之后将无法使用axInstance的任何变量和方法了,直到刷新页面。
this.init()方法
该方法可通过name名找到并初始化某一个实例,支持三个参数,说明如下:
- name:实例名称,必填项
- type:实例类型,选填项,如果填写了表示从这一类中查找实例
- callback:回调函数,初始化后执行,支持一个参数即将初始化的实例对象
this.initAll()方法
该方法可通过类别查找到某一类实例并初始化他们,支持两个参数,说明如下:
- type:实例类型,必填项,如果为空或未填则表示查找所有实例
- callback:回调函数,初始化后执行,支持一个参数即将初始化的实例对象数组
示例
以下根据以上变量和操作方法进行效果演示。请按下F12打开控制台查看打印数据。
-
<a href="###" class="ax-btn ax-primary" axPopup='insName:"popup01",content:"我是中国人"'>popup实例01</a> <a href="###" class="ax-btn ax-primary" axPopup='insName:"popup02",content:"我是中国人"'>popup实例02</a> <a href="###" class="ax-btn ax-primary" axDialog='insName:"dialog01",content:"我是中国人"'>dialog实例01</a> <a href="###" class="ax-btn ax-primary" axDialog='insName:"dialog02",content:"我是中国人"'>dialog实例02</a> <div class="ax-break"></div> <a href="###" class="ax-btn ax-primary" id="findIns">找到dialog01实例</a> <a href="###" class="ax-btn ax-primary" id="findInss">找到所有dialog实例</a> <a href="###" class="ax-btn ax-primary" id="findAll">找到所有实例</a> <div class="ax-break"></div> <a href="###" class="ax-btn ax-primary" id="destroyIns">销毁popup实例01</a> <a href="###" class="ax-btn ax-primary" id="destroyInss">销毁所有popup实例</a> <a href="###" class="ax-btn ax-primary" id="destroyAll">销毁所有实例</a> <div class="ax-break"></div> <a href="###" class="ax-btn ax-primary" id="initIns">重新启用popup实例01</a> <a href="###" class="ax-btn ax-primary" id="initInss">重新启用所有popup实例</a> <a href="###" class="ax-btn ax-primary" id="initAll">重新启用所有实例</a> <div class="ax-break"></div> <a href="###" class="ax-btn ax-primary" id="clear">销毁所有并清空</a>
-
let findIns = document.querySelector('#findIns'), findInss = document.querySelector('#findInss'), findAll = document.querySelector('#findAll'), destroyIns = document.querySelector('#destroyIns'), destroyInss = document.querySelector('#destroyInss'), destroyAll = document.querySelector('#destroyAll'), initIns = document.querySelector('#initIns'), initInss = document.querySelector('#initInss'), initAll = document.querySelector('#initAll'), clear = document.querySelector('#clear'); findIns.onclick = function () { console.log(axInstance.find('dialog01')); //console.log(axInstance.find('dialog01','dialog',true)); } findInss.onclick = function () { console.log(axInstance.findAll('dialog')); //console.log(axInstance.findAll('dialog',true)); } findAll.onclick = function () { console.log(axInstance.findAll()); //console.log(axInstance.findAll('',true)); } destroyIns.onclick = function () { axInstance.destroy('popup01'); console.log(axInstance.data); } destroyInss.onclick = function () { axInstance.destroyAll('popup'); console.log(axInstance.data); } destroyAll.onclick = function () { axInstance.destroyAll(); console.log(axInstance.data); } initIns.onclick = function () { axInstance.init('popup01'); console.log(axInstance.data); } initInss.onclick = function () { axInstance.initAll('popup'); console.log(axInstance.data); } initAll.onclick = function () { axInstance.initAll(); console.log(axInstance.data); } clear.onclick = function () { axInstance.clear(); console.log(axInstance.data); }