Browse Source

在组件创建的时候即确定父子关系

es6
guy 4 years ago
parent
commit
5a2434172b
  1. 6
      src/core/shortcut.js
  2. 14
      src/core/widget.js

6
src/core/shortcut.js

@ -21,9 +21,11 @@
var widget = new cls();
widget._initProps(config);
widget._init();
widget._initRoot();
widget._initRef();
if (config.element || config.root) {
widget._lazyConstructor();
}
return widget;
};

14
src/core/widget.js

@ -28,6 +28,14 @@
// 覆盖父类的_constructor方法,widget不走ob的生命周期
_constructor: function () {
// do nothing
},
_lazyConstructor: function () {
if (!this._constructed) {
this._constructed = true;
this._init();
}
},
beforeInit: null,
@ -54,7 +62,6 @@
_init: function () {
BI.Widget.superclass._init.apply(this, arguments);
this._initRoot();
this._initElementWidth();
this._initElementHeight();
this._initVisual();
@ -90,14 +97,15 @@
var o = this.options;
this.widgetName = o.widgetName || BI.uniqueId("widget");
this._isRoot = o.root;
this._children = {};
if (BI.isWidget(o.element)) {
this.element = this.options.element.element;
if (o.element instanceof BI.Widget) {
this._parent = o.element;
this._parent.addWidget(this.widgetName, this);
} else {
this._isRoot = true;
}
this.element = this.options.element.element;
} else if (o.element) {
// if (o.root !== true) {
// throw new Error("root is a required property");
@ -120,7 +128,6 @@
if (o.css) {
this.element.css(o.css);
}
this._children = {};
},
_initElementWidth: function () {
@ -330,6 +337,7 @@
throw new Error("name has already been existed");
}
widget._setParent && widget._setParent(this);
widget._lazyConstructor();
widget.on(BI.Events.DESTROY, function () {
BI.remove(self._children, this);
});

Loading…
Cancel
Save