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);
                                            }