bui.extend Class
插件扩展, 创建的插件会有统一的方法及事件参数, 可以在插件内部使用.
Constructor
bui.extend
                                    
                                            
                                                (
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                    
                                        
                                    
                                        - 
                                                            
option 
Parameters:
- 
                                                            
optionObject注册的参数
- 
                                                                        
nameString插件名称
 - 
                                                                        
configObject插件参数
 - 
                                                                        
callbackFunction插件的回调
 
 - 
                                                                        
 
Example:
   bui.extend({
                                           name:"accordion",
                                           config: {
                                               id: "",
                                               handle: "dt",
                                               target: "dd",
                                               targetHeight: 0,
                                               single: false,
                                               autoinit: true,
                                               callback: null
                                           },
                                           callback:function(option){
                                               // 获取父级的对象,该对象有以下公共方法
                                               var that = this;
                                    
                                               that.widget
                                               that.destroy;
                                               that.on;
                                               that.off;
                                               that.trigger;
                                               
                                               // 控件的初始化
                                               function inited(){
                                    
                                                   // 链式调用
                                                   return that
                                               }
                                               // 抛出对应的方法, 不能为以下方法或属性: 
                                               init, option, config, widgets, widget, reinit, destroy, handle, on, off, trigger, initStatus, reInitStatus,  emitter, prefix, showLog
                                    
                                               that.inited = inited;
                                               
                                               // 执行一次初始化
                                               inited();
                                               
                                               // 返回才能拿到对应的方法
                                               return that;
                                           }
                                       })
                                    
                                       var uiaccordion = bui.accordion({
                                           id: ""
                                       });
                                    
                                    
                                                Methods
destroy
                                                
                                                        
                                                            (
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    - 
                                                                        
[callback] [ 销毁后做什么] 
插件的公共方法,销毁控件.
Parameters:
- 
                                                                        
[callback] [ 销毁后做什么]Function optional 
Example:
       插件内部使用: 
                                                       // 插件内部要销毁的东西, 比方 定时器,事件绑定, 外部是不知道的, 所以要内部处理
                                                       that.beforeDestroy = function(){
                                                
                                                       }
                                                
                                                       实例的销毁:
                                                       var accordion = bui.accordion();
                                                       // 调用这个方法前, 会先执行 beforeDestroy. 
                                                       accordion.destroy();
                                                
                                                
                                                            init
                                                
                                                        ()
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    [控件的初始化]
Example:
       //初始化生命周期,默认已经初始化1次
                                                       var accordion = bui.accordion();
                                                
                                                       // 执行多一次初始化
                                                       accordion.init();
                                                
                                                
                                                            option
                                                
                                                        
                                                            (
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    - 
                                                                        
[key] [ 获取依赖的时候] - 
                                                                        
[value] [ 获取依赖的时候] 
外部统一的修改获取参数, 修改this.config 的参数, 并且重新调用 init 方法.
Parameters:
- 
                                                                        
[key] [ 获取依赖的时候]String | Object optional - 
                                                                        
[value] [ 获取依赖的时候]String optional 
Example:
       比方初始化了插件: 
                                                       var accordion = bui.accordion();
                                                
                                                       // 实例获取参数
                                                       accordion.option("id");
                                                
                                                       // 修改一个参数
                                                       accordion.option("height",500);
                                                
                                                       // 修改多个参数
                                                       accordion.option({"height":500,handle:".bui-btn-test"});
                                                
                                                
                                                            prefix
                                                
                                                        
                                                            (
                                                
                                                        
                                                            String
                                                        
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    - 
                                                                        
[str] [ 去除前缀以后的值] 
处理样式的前缀.
Parameters:
- 
                                                                        
[str] [ 去除前缀以后的值]String optional 
Returns:
                                                                        String:
                                                                    
                                                        [ 出现问题的位置 ]
Example:
       var className = that.prefix("accordion");
                                                
                                                       // bui-accordion
                                                
                                                
                                                            reinit
                                                
                                                        ()
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    插件的公共方法,重新初始化.
Example:
       实例:
                                                       var accordion = bui.accordion();
                                                       // 重新初始化
                                                       accordion.reinit();
                                                
                                                
                                                            showLog
                                                
                                                        
                                                            (
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    - 
                                                                        
[str] [ 日志说明, try{}catche(e){ that.showLog(e) }] - 
                                                                        
[where] [ 出现问题的位置] 
插件内部统一的抛出日志方法.
Parameters:
- 
                                                                        
[str] [ 日志说明, try{}catche(e){ that.showLog(e) }]String | Object optional - 
                                                                        
[where] [ 出现问题的位置]String optional 
Example:
       // 抛出异常, 在bui.accordion init 方法
                                                       that.showLog("初始化错误","bui.accordion init")
                                                
                                                       // 支持对象
                                                       try{}catche(e){ that.showLog(e) }
                                                
                                                
                                                            widget
                                                
                                                        
                                                            (
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    - 
                                                                        
[name] [ 获取依赖的时候] 
实例的公共方法, 获取插件里面的实例,
Parameters:
- 
                                                                        
[name] [ 获取依赖的时候]String optional 
Example:
       插件内部使用 that.widgets.loading = bui.loading(); 初始化, 实例才能通过widget方法获取得到内部依赖.
                                                
                                                       比方初始化了插件: 
                                                       var accordion = bui.accordion();
                                                
                                                       // 实例获取依赖
                                                       accordion.widget("loading");
                                                
                                                
                                                            Events
off
                                                    
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    为控件取消绑定事件
Event Payload:
- 
                                                                        
[type] [ 事件类型: "show"(显示目标时) | "hide"(隐藏目标时)]String optional - 
                                                                        
[callback] [ 绑定的事件, this 为当前点击的菜单]Function optional 
Example:
       that.off("show");
                                                
                                                
                                                            on
                                                    
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    为控件绑定事件
Event Payload:
- 
                                                                        
[type] [ 事件类型: "show"(显示目标时) | "hide"(隐藏目标时)]String optional - 
                                                                        
[callback] [ 绑定的事件, this 为当前点击的菜单]Function optional 
Example:
       that.on("show",function () {
                                                           // 点击的菜单
                                                           console.log(this);
                                                       });
                                                
                                                
                                                            trigger
                                                    
                                                
                                                
                                                
                                                
                                                
                                                    
                                                
                                                    触发自定义事件
Event Payload:
- 
                                                                        
[type] [ 自定义事件名称]String optional - 
                                                                        
[arguments] [ 需要传给自定义事件的参数,可以有多个]String | Object | Number optional 
Example:
       $("#id").click(function (e) {
                                                       that.trigger("show",e);
                                                       })
                                                
                                                            