guy 6 years ago
parent
commit
aa7a9dd64b
  1. 297
      dist/bundle.js
  2. 6
      dist/bundle.min.js
  3. 297
      dist/core.js
  4. 297
      dist/fineui.js
  5. 4
      dist/fineui.min.js
  6. 297
      dist/fineui_without_jquery_polyfill.js
  7. 297
      dist/utils.js
  8. 4
      dist/utils.min.js
  9. 295
      src/core/ob.js

297
dist/bundle.js vendored

@ -11478,158 +11478,183 @@ if (!_global.BI) {
} }
}); });
})();/** })();!(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init(); // Prevent never-ending loop
this._initRef(); if (target === copy) {
}; continue;
_.extend(BI.OB.prototype, { }
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) { if (copy !== undefined) {
return {}; target[name] = copy;
}, }
}
}
}
}
_init: function () { /**
this._initListeners(); * 客户端观察者主要处理事件的添加删除执行等
this.init && this.init(); * @class BI.OB
}, * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
}
this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
_initListeners: function () { _defaultConfig: function (config) {
var self = this; return {};
if (this.options.listeners != null) { },
_.each(this.options.listeners, function (lis) {
(lis.target ? lis.target : self)[lis.once ? "once" : "on"]
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
}
},
// 获得一个当前对象的引用 _init: function () {
_initRef: function () { this._initListeners();
if (this.options.ref) { this.init && this.init();
this.options.ref.call(this, this); },
}
},
//释放当前对象 _initListeners: function () {
_purgeRef: function(){ var self = this;
if (this.options.ref) { if (this.options.listeners != null) {
this.options.ref.call(null); _.each(this.options.listeners, function (lis) {
} (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
}, (lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
}
},
_getEvents: function () { // 获得一个当前对象的引用
if (!_.isArray(this.events)) { _initRef: function () {
this.events = []; if (this.options.ref) {
} this.options.ref.call(this, this);
return this.events; }
}, },
/** //释放当前对象
* 给观察者绑定一个事件 _purgeRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(null);
*/ }
on: function (eventName, fn) { },
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName];
if (!_.isArray(fns)) {
fns = [];
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** _getEvents: function () {
* 给观察者绑定一个只执行一次的事件 if (!_.isArray(this.events)) {
* @param {String} eventName 事件的名字 this.events = [];
* @param {Function} fn 事件对应的执行函数 }
*/ return this.events;
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ /**
if (fn == null) { * 给观察者绑定一个事件
delete this._getEvents()[eventName]; * @param {String} eventName 事件的名字
} else { * @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
});/** });
})();/**
* Widget超类 * Widget超类
* @class BI.Widget * @class BI.Widget
* @extends BI.OB * @extends BI.OB

6
dist/bundle.min.js vendored

File diff suppressed because one or more lines are too long

297
dist/core.js vendored

@ -11478,158 +11478,183 @@ if (!_global.BI) {
} }
}); });
})();/** })();!(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init(); // Prevent never-ending loop
this._initRef(); if (target === copy) {
}; continue;
_.extend(BI.OB.prototype, { }
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) {
return {};
},
_init: function () {
this._initListeners();
this.init && this.init();
},
_initListeners: function () { if (copy !== undefined) {
var self = this; target[name] = copy;
if (this.options.listeners != null) { }
_.each(this.options.listeners, function (lis) { }
(lis.target ? lis.target : self)[lis.once ? "once" : "on"] }
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
} }
}, }
// 获得一个当前对象的引用 /**
_initRef: function () { * 客户端观察者主要处理事件的添加删除执行等
if (this.options.ref) { * @class BI.OB
this.options.ref.call(this, this); * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
} }
}, this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
//释放当前对象 _defaultConfig: function (config) {
_purgeRef: function(){ return {};
if (this.options.ref) { },
this.options.ref.call(null);
}
},
_getEvents: function () { _init: function () {
if (!_.isArray(this.events)) { this._initListeners();
this.events = []; this.init && this.init();
} },
return this.events;
},
/** _initListeners: function () {
* 给观察者绑定一个事件 var self = this;
* @param {String} eventName 事件的名字 if (this.options.listeners != null) {
* @param {Function} fn 事件对应的执行函数 _.each(this.options.listeners, function (lis) {
*/ (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
on: function (eventName, fn) { (lis.eventName, _.bind(lis.action, self));
eventName = eventName.toLowerCase(); });
var fns = this._getEvents()[eventName]; delete this.options.listeners;
if (!_.isArray(fns)) { }
fns = []; },
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** // 获得一个当前对象的引用
* 给观察者绑定一个只执行一次的事件 _initRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(this, this);
*/ }
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ //释放当前对象
if (fn == null) { _purgeRef: function () {
delete this._getEvents()[eventName]; if (this.options.ref) {
} else { this.options.ref.call(null);
}
},
_getEvents: function () {
if (!_.isArray(this.events)) {
this.events = [];
}
return this.events;
},
/**
* 给观察者绑定一个事件
* @param {String} eventName 事件的名字
* @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
});/** });
})();/**
* Widget超类 * Widget超类
* @class BI.Widget * @class BI.Widget
* @extends BI.OB * @extends BI.OB

297
dist/fineui.js vendored

@ -11720,158 +11720,183 @@ if (!_global.BI) {
} }
}); });
})();/** })();!(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init(); // Prevent never-ending loop
this._initRef(); if (target === copy) {
}; continue;
_.extend(BI.OB.prototype, { }
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) { if (copy !== undefined) {
return {}; target[name] = copy;
}, }
}
}
}
}
_init: function () { /**
this._initListeners(); * 客户端观察者主要处理事件的添加删除执行等
this.init && this.init(); * @class BI.OB
}, * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
}
this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
_initListeners: function () { _defaultConfig: function (config) {
var self = this; return {};
if (this.options.listeners != null) { },
_.each(this.options.listeners, function (lis) {
(lis.target ? lis.target : self)[lis.once ? "once" : "on"]
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
}
},
// 获得一个当前对象的引用 _init: function () {
_initRef: function () { this._initListeners();
if (this.options.ref) { this.init && this.init();
this.options.ref.call(this, this); },
}
},
//释放当前对象 _initListeners: function () {
_purgeRef: function(){ var self = this;
if (this.options.ref) { if (this.options.listeners != null) {
this.options.ref.call(null); _.each(this.options.listeners, function (lis) {
} (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
}, (lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
}
},
_getEvents: function () { // 获得一个当前对象的引用
if (!_.isArray(this.events)) { _initRef: function () {
this.events = []; if (this.options.ref) {
} this.options.ref.call(this, this);
return this.events; }
}, },
/** //释放当前对象
* 给观察者绑定一个事件 _purgeRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(null);
*/ }
on: function (eventName, fn) { },
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName];
if (!_.isArray(fns)) {
fns = [];
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** _getEvents: function () {
* 给观察者绑定一个只执行一次的事件 if (!_.isArray(this.events)) {
* @param {String} eventName 事件的名字 this.events = [];
* @param {Function} fn 事件对应的执行函数 }
*/ return this.events;
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ /**
if (fn == null) { * 给观察者绑定一个事件
delete this._getEvents()[eventName]; * @param {String} eventName 事件的名字
} else { * @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
});/** });
})();/**
* Widget超类 * Widget超类
* @class BI.Widget * @class BI.Widget
* @extends BI.OB * @extends BI.OB

4
dist/fineui.min.js vendored

File diff suppressed because one or more lines are too long

297
dist/fineui_without_jquery_polyfill.js vendored

@ -11478,158 +11478,183 @@ if (!_global.BI) {
} }
}); });
})();/** })();!(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init(); // Prevent never-ending loop
this._initRef(); if (target === copy) {
}; continue;
_.extend(BI.OB.prototype, { }
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) {
return {};
},
_init: function () {
this._initListeners();
this.init && this.init();
},
_initListeners: function () { if (copy !== undefined) {
var self = this; target[name] = copy;
if (this.options.listeners != null) { }
_.each(this.options.listeners, function (lis) { }
(lis.target ? lis.target : self)[lis.once ? "once" : "on"] }
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
} }
}, }
// 获得一个当前对象的引用 /**
_initRef: function () { * 客户端观察者主要处理事件的添加删除执行等
if (this.options.ref) { * @class BI.OB
this.options.ref.call(this, this); * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
} }
}, this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
//释放当前对象 _defaultConfig: function (config) {
_purgeRef: function(){ return {};
if (this.options.ref) { },
this.options.ref.call(null);
}
},
_getEvents: function () { _init: function () {
if (!_.isArray(this.events)) { this._initListeners();
this.events = []; this.init && this.init();
} },
return this.events;
},
/** _initListeners: function () {
* 给观察者绑定一个事件 var self = this;
* @param {String} eventName 事件的名字 if (this.options.listeners != null) {
* @param {Function} fn 事件对应的执行函数 _.each(this.options.listeners, function (lis) {
*/ (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
on: function (eventName, fn) { (lis.eventName, _.bind(lis.action, self));
eventName = eventName.toLowerCase(); });
var fns = this._getEvents()[eventName]; delete this.options.listeners;
if (!_.isArray(fns)) { }
fns = []; },
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** // 获得一个当前对象的引用
* 给观察者绑定一个只执行一次的事件 _initRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(this, this);
*/ }
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ //释放当前对象
if (fn == null) { _purgeRef: function () {
delete this._getEvents()[eventName]; if (this.options.ref) {
} else { this.options.ref.call(null);
}
},
_getEvents: function () {
if (!_.isArray(this.events)) {
this.events = [];
}
return this.events;
},
/**
* 给观察者绑定一个事件
* @param {String} eventName 事件的名字
* @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
});/** });
})();/**
* Widget超类 * Widget超类
* @class BI.Widget * @class BI.Widget
* @extends BI.OB * @extends BI.OB

297
dist/utils.js vendored

@ -12237,158 +12237,183 @@ if (!_global.BI) {
} }
}); });
})();/** })();!(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init(); // Prevent never-ending loop
this._initRef(); if (target === copy) {
}; continue;
_.extend(BI.OB.prototype, { }
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) {
return {};
},
_init: function () {
this._initListeners();
this.init && this.init();
},
_initListeners: function () { if (copy !== undefined) {
var self = this; target[name] = copy;
if (this.options.listeners != null) { }
_.each(this.options.listeners, function (lis) { }
(lis.target ? lis.target : self)[lis.once ? "once" : "on"] }
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
} }
}, }
// 获得一个当前对象的引用 /**
_initRef: function () { * 客户端观察者主要处理事件的添加删除执行等
if (this.options.ref) { * @class BI.OB
this.options.ref.call(this, this); * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
} }
}, this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
//释放当前对象 _defaultConfig: function (config) {
_purgeRef: function(){ return {};
if (this.options.ref) { },
this.options.ref.call(null);
}
},
_getEvents: function () { _init: function () {
if (!_.isArray(this.events)) { this._initListeners();
this.events = []; this.init && this.init();
} },
return this.events;
},
/** _initListeners: function () {
* 给观察者绑定一个事件 var self = this;
* @param {String} eventName 事件的名字 if (this.options.listeners != null) {
* @param {Function} fn 事件对应的执行函数 _.each(this.options.listeners, function (lis) {
*/ (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
on: function (eventName, fn) { (lis.eventName, _.bind(lis.action, self));
eventName = eventName.toLowerCase(); });
var fns = this._getEvents()[eventName]; delete this.options.listeners;
if (!_.isArray(fns)) { }
fns = []; },
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** // 获得一个当前对象的引用
* 给观察者绑定一个只执行一次的事件 _initRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(this, this);
*/ }
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ //释放当前对象
if (fn == null) { _purgeRef: function () {
delete this._getEvents()[eventName]; if (this.options.ref) {
} else { this.options.ref.call(null);
}
},
_getEvents: function () {
if (!_.isArray(this.events)) {
this.events = [];
}
return this.events;
},
/**
* 给观察者绑定一个事件
* @param {String} eventName 事件的名字
* @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
});(function () { });
})();(function () {
var _global; var _global;
if (typeof window !== "undefined") { if (typeof window !== "undefined") {
_global = window; _global = window;

4
dist/utils.min.js vendored

File diff suppressed because one or more lines are too long

295
src/core/ob.js

@ -1,152 +1,177 @@
/** !(function () {
* 客户端观察者主要处理事件的添加删除执行等 function extend () {
* @class BI.OB var target = arguments[0] || {}, length = arguments.length, i = 1, options, name, src, copy;
* @abstract for (; i < length; i++) {
*/ // Only deal with non-null/undefined values
BI.OB = function (config) { if ((options = arguments[i]) != null) {
var props = this.props; // Extend the base object
if (BI.isFunction(this.props)) { for (name in options) {
props = this.props(config); src = target[name];
} copy = options[name];
this.options = (_global.$ || _global._).extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
_defaultConfig: function (config) {
return {};
},
_init: function () { // Prevent never-ending loop
this._initListeners(); if (target === copy) {
this.init && this.init(); continue;
}, }
_initListeners: function () { if (copy !== undefined) {
var self = this; target[name] = copy;
if (this.options.listeners != null) { }
_.each(this.options.listeners, function (lis) { }
(lis.target ? lis.target : self)[lis.once ? "once" : "on"] }
(lis.eventName, _.bind(lis.action, self));
});
delete this.options.listeners;
} }
}, }
// 获得一个当前对象的引用 /**
_initRef: function () { * 客户端观察者主要处理事件的添加删除执行等
if (this.options.ref) { * @class BI.OB
this.options.ref.call(this, this); * @abstract
*/
BI.OB = function (config) {
var props = this.props;
if (BI.isFunction(this.props)) {
props = this.props(config);
} }
}, this.options = extend(this._defaultConfig(config), props, config);
this._init();
this._initRef();
};
_.extend(BI.OB.prototype, {
props: {},
init: null,
destroyed: null,
//释放当前对象 _defaultConfig: function (config) {
_purgeRef: function(){ return {};
if (this.options.ref) { },
this.options.ref.call(null);
}
},
_getEvents: function () { _init: function () {
if (!_.isArray(this.events)) { this._initListeners();
this.events = []; this.init && this.init();
} },
return this.events;
},
/** _initListeners: function () {
* 给观察者绑定一个事件 var self = this;
* @param {String} eventName 事件的名字 if (this.options.listeners != null) {
* @param {Function} fn 事件对应的执行函数 _.each(this.options.listeners, function (lis) {
*/ (lis.target ? lis.target : self)[lis.once ? "once" : "on"]
on: function (eventName, fn) { (lis.eventName, _.bind(lis.action, self));
eventName = eventName.toLowerCase(); });
var fns = this._getEvents()[eventName]; delete this.options.listeners;
if (!_.isArray(fns)) { }
fns = []; },
this._getEvents()[eventName] = fns;
}
fns.push(fn);
},
/** // 获得一个当前对象的引用
* 给观察者绑定一个只执行一次的事件 _initRef: function () {
* @param {String} eventName 事件的名字 if (this.options.ref) {
* @param {Function} fn 事件对应的执行函数 this.options.ref.call(this, this);
*/ }
once: function (eventName, fn) { },
var proxy = function () {
fn.apply(this, arguments);
this.un(eventName, proxy);
};
this.on(eventName, proxy);
},
/**
* 解除观察者绑定的指定事件
* @param {String} eventName 要解除绑定事件的名字
* @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
*/
un: function (eventName, fn) {
eventName = eventName.toLowerCase();
/* alex:如果fn是null,就是把eventName上面所有方法都un掉*/ //释放当前对象
if (fn == null) { _purgeRef: function () {
delete this._getEvents()[eventName]; if (this.options.ref) {
} else { this.options.ref.call(null);
}
},
_getEvents: function () {
if (!_.isArray(this.events)) {
this.events = [];
}
return this.events;
},
/**
* 给观察者绑定一个事件
* @param {String} eventName 事件的名字
* @param {Function} fn 事件对应的执行函数
*/
on: function (eventName, fn) {
eventName = eventName.toLowerCase();
var fns = this._getEvents()[eventName]; var fns = this._getEvents()[eventName];
if (_.isArray(fns)) { if (!_.isArray(fns)) {
var newFns = []; fns = [];
_.each(fns, function (ifn) { this._getEvents()[eventName] = fns;
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
} }
} fns.push(fn);
}, },
/**
* 清除观察者的所有事件绑定 /**
*/ * 给观察者绑定一个只执行一次的事件
purgeListeners: function () { * @param {String} eventName 事件的名字
/* alex:清空events*/ * @param {Function} fn 事件对应的执行函数
this.events = []; */
}, once: function (eventName, fn) {
/** var proxy = function () {
* 触发绑定过的事件 fn.apply(this, arguments);
* this.un(eventName, proxy);
* @param {String} eventName 要触发的事件的名字 };
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true this.on(eventName, proxy);
*/ },
fireEvent: function () { /**
var eventName = arguments[0].toLowerCase(); * 解除观察者绑定的指定事件
var fns = this._getEvents()[eventName]; * @param {String} eventName 要解除绑定事件的名字
if (BI.isArray(fns)) { * @param {Function} fn 事件对应的执行函数该参数是可选的没有该参数时将解除绑定所有同名字的事件
if (BI.isArguments(arguments[1])) { */
for (var i = 0; i < fns.length; i++) { un: function (eventName, fn) {
if (fns[i].apply(this, arguments[1]) === false) { eventName = eventName.toLowerCase();
return false;
} /* alex:如果fn是null,就是把eventName上面所有方法都un掉*/
} if (fn == null) {
delete this._getEvents()[eventName];
} else { } else {
var args = Array.prototype.slice.call(arguments, 1); var fns = this._getEvents()[eventName];
for (var i = 0; i < fns.length; i++) { if (_.isArray(fns)) {
if (fns[i].apply(this, args) === false) { var newFns = [];
return false; _.each(fns, function (ifn) {
if (ifn != fn) {
newFns.push(ifn);
}
});
this._getEvents()[eventName] = newFns;
}
}
},
/**
* 清除观察者的所有事件绑定
*/
purgeListeners: function () {
/* alex:清空events*/
this.events = [];
},
/**
* 触发绑定过的事件
*
* @param {String} eventName 要触发的事件的名字
* @returns {Boolean} 如果事件函数返回false则返回false并中断其他同名事件的执行否则执行所有的同名事件并返回true
*/
fireEvent: function () {
var eventName = arguments[0].toLowerCase();
var fns = this._getEvents()[eventName];
if (BI.isArray(fns)) {
if (BI.isArguments(arguments[1])) {
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, arguments[1]) === false) {
return false;
}
}
} else {
var args = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < fns.length; i++) {
if (fns[i].apply(this, args) === false) {
return false;
}
} }
} }
} }
} return true;
return true; },
},
destroy: function () { destroy: function () {
this.destroyed && this.destroyed(); this.destroyed && this.destroyed();
this._purgeRef(); this._purgeRef();
this.purgeListeners(); this.purgeListeners();
} }
}); });
})();
Loading…
Cancel
Save