From 9cc418cd3dbd30faa99a3fb887e72c95d96d2d87 Mon Sep 17 00:00:00 2001 From: iapyang Date: Wed, 17 Jul 2019 14:16:34 +0800 Subject: [PATCH] =?UTF-8?q?KERNEL-859=20refactor:=20=E6=94=B9widget?= =?UTF-8?q?=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/ob.js | 19 ++++++++++++------- src/core/shortcut.js | 12 +++++++----- src/core/widget.js | 3 +++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/core/ob.js b/src/core/ob.js index 7c7d68ddf..4c617631f 100644 --- a/src/core/ob.js +++ b/src/core/ob.js @@ -29,24 +29,29 @@ * @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(); + this.__config = config; + this._constructor(); }; _.extend(BI.OB.prototype, { props: {}, init: null, destroyed: null, + _constructor: function () { + this._init(); + this._initRef(); + }, + _defaultConfig: function (config) { return {}; }, _init: function () { + var props = this.props; + if (BI.isFunction(this.props)) { + props = this.props(this.__config); + } + this.options = extend(this._defaultConfig(this.__config), props, this.__config); this._initListeners(); this.init && this.init(); }, diff --git a/src/core/shortcut.js b/src/core/shortcut.js index 53d6ae165..b40cac907 100644 --- a/src/core/shortcut.js +++ b/src/core/shortcut.js @@ -9,12 +9,14 @@ // 根据配置属性生成widget var createWidget = function (config) { - if (config["classType"]) { - return new (new Function("return " + config["classType"] + ";")())(config); - } - var cls = kv[config.type]; - return new cls(config); + + var widget = new cls(config); + + widget._init(); + widget._initRef(); + + return widget; }; BI.createWidget = function (item, options, context) { diff --git a/src/core/widget.js b/src/core/widget.js index f6add3ff0..eae1276e1 100644 --- a/src/core/widget.js +++ b/src/core/widget.js @@ -25,6 +25,9 @@ }); }, + // 覆盖父类的_constructor方法,widget不走ob的生命周期 + _constructor: function () {}, + beforeInit: null, // 生命周期函数