144 lines
2.9 KiB
JavaScript
144 lines
2.9 KiB
JavaScript
/**
|
||
|
||
@Name:layui.modDemo XX组件
|
||
@Author:贤心
|
||
@License:MIT
|
||
|
||
*/
|
||
|
||
layui.define(['laytpl'], function(exports){
|
||
"use strict";
|
||
|
||
var $ = layui.$
|
||
,laytpl = layui.laytpl
|
||
|
||
//模块名
|
||
,MOD_NAME = 'modDemo'
|
||
|
||
//外部接口
|
||
,modeDemo = {
|
||
config: {}
|
||
,index: layui[MOD_NAME] ? (layui[MOD_NAME].index + 10000) : 0
|
||
|
||
//设置全局项
|
||
,set: function(options){
|
||
var that = this;
|
||
that.config = $.extend({}, that.config, options);
|
||
return that;
|
||
}
|
||
|
||
//事件监听
|
||
,on: function(events, callback){
|
||
return layui.onevent.call(this, MOD_NAME, events, callback);
|
||
}
|
||
}
|
||
|
||
//操作当前实例
|
||
,thisModule = function(){
|
||
var that = this
|
||
,options = that.config
|
||
,id = options.id || that.index;
|
||
|
||
thisModule.that[id] = that; //记录当前实例对象
|
||
thisModule.config[id] = options; //记录当前实例配置项
|
||
|
||
return {
|
||
config: options
|
||
//重置实例
|
||
,reload: function(options){
|
||
that.reload.call(that, options);
|
||
}
|
||
}
|
||
}
|
||
|
||
//获取当前实例配置项
|
||
,getThisModuleConfig = function(id){
|
||
var config = thisModule.config[id];
|
||
if(!config) hint.error('The ID option was not found in the '+ MOD_NAME +' instance');
|
||
return config || null;
|
||
}
|
||
|
||
//字符常量
|
||
,ELEM = 'layui-modeDemo'
|
||
|
||
|
||
//主模板
|
||
,TPL_MAIN = ['<div class="ayui-border-box">'
|
||
|
||
,'</div>'].join('')
|
||
|
||
//构造器
|
||
,Class = function(options){
|
||
var that = this;
|
||
that.index = ++transfer.index;
|
||
that.config = $.extend({}, that.config, transfer.config, options);
|
||
that.render();
|
||
};
|
||
|
||
//默认配置
|
||
Class.prototype.config = {
|
||
|
||
};
|
||
|
||
//重载实例
|
||
Class.prototype.reload = function(options){
|
||
var that = this;
|
||
|
||
layui.each(options, function(key, item){
|
||
if(item.constructor === Array) delete that.config[key];
|
||
});
|
||
|
||
that.config = $.extend(true, {}, that.config, options);
|
||
that.render();
|
||
};
|
||
|
||
//渲染
|
||
Class.prototype.render = function(){
|
||
var that = this
|
||
,options = that.config;
|
||
|
||
//解析模板
|
||
that.elem = $(TPL_MAIN);
|
||
|
||
var othis = options.elem = $(options.elem);
|
||
if(!othis[0]) return;
|
||
|
||
//索引
|
||
that.key = options.id || that.index;
|
||
|
||
//插入组件结构
|
||
othis.html(that.elem);
|
||
|
||
that.events(); //事件
|
||
};
|
||
|
||
//事件
|
||
Class.prototype.events = function(){
|
||
var that = this;
|
||
|
||
|
||
};
|
||
|
||
|
||
|
||
//记录所有实例
|
||
thisModule.that = {}; //记录所有实例对象
|
||
thisModule.config = {}; //记录所有实例配置项
|
||
|
||
//重载实例
|
||
modeDemo.reload = function(id, options){
|
||
var that = thisModule.that[id];
|
||
that.reload(options);
|
||
|
||
return thisModule.call(that);
|
||
};
|
||
|
||
//核心入口
|
||
modeDemo.render = function(options){
|
||
var inst = new Class(options);
|
||
return thisTransfer.call(inst);
|
||
};
|
||
|
||
exports(MOD_NAME, modeDemo);
|
||
});
|