Browse Source

无JIRA任务,invisible为true的时候不create子组件

es6
Dailer 6 years ago
parent
commit
7fae9a9aa6
  1. 29
      dist/fix/fix.compact.js
  2. 37
      src/core/widget.js

29
dist/fix/fix.compact.js vendored

@ -1,5 +1,5 @@
;(function () {
function initWatch (vm, watch) {
function initWatch(vm, watch) {
vm._watchers || (vm._watchers = []);
for (var key in watch) {
var handler = watch[key];
@ -13,7 +13,7 @@
}
}
function createWatcher (vm, keyOrFn, handler) {
function createWatcher(vm, keyOrFn, handler) {
return Fix.watch(vm.model, keyOrFn, _.bind(handler, vm), {
store: vm.store
});
@ -22,24 +22,24 @@
var target = null;
var targetStack = [];
function pushTarget (_target) {
function pushTarget(_target) {
if (target) targetStack.push(target);
Fix.Model.target = target = _target;
}
function popTarget () {
function popTarget() {
Fix.Model.target = target = targetStack.pop();
}
var context = null;
var contextStack = [];
function pushContext (_context) {
function pushContext(_context) {
if (context) contextStack.push(context);
Fix.Model.context = context = _context;
}
function popContext () {
function popContext() {
Fix.Model.context = context = contextStack.pop();
}
@ -60,7 +60,7 @@
}, options);
};
function findStore (widget) {
function findStore(widget) {
if (target != null) {
return target;
}
@ -106,12 +106,11 @@
};
});
var _init = BI.Widget.prototype._init;
BI.Widget.prototype._init = function () {
var self = this;
function createStore() {
var needPop = false;
if (window.Fix && this._store) {
if (!this._storeCreated && window.Fix && this._store && this.isVisible()) {
var store = findStore(this.options.context || this.options.element);
this._storeCreated = true;
if (store) {
pushTarget(store);
needPop = true;
@ -128,6 +127,13 @@
}
needPop = true;
}
return needPop;
}
var _init = BI.Widget.prototype._init;
BI.Widget.prototype._init = function () {
var self = this;
var needPop = createStore.call(this);
_init.apply(this, arguments);
needPop && popTarget();
};
@ -166,6 +172,7 @@
_.each(["_mount"], function (name) {
var old = BI.Widget.prototype[name];
old && (BI.Widget.prototype[name] = function () {
createStore.call(this);
this.store && pushTarget(this.store);
var res = old.apply(this, arguments);
this.store && popTarget();

37
src/core/widget.js

@ -5,7 +5,14 @@
*
* @cfg {JSON} options 配置属性
*/
BI.Widget = BI.inherit(BI.OB, {
!(function () {
var lazy = (typeof document !== 'undefined' &&
typeof document.documentMode === 'number') ||
(typeof navigator !== 'undefined' &&
typeof navigator.userAgent === 'string' &&
/\bEdge\/\d/.test(navigator.userAgent));
BI.Widget = BI.inherit(BI.OB, {
_defaultConfig: function () {
return BI.extend(BI.Widget.superclass._defaultConfig.apply(this), {
root: false,
@ -52,6 +59,7 @@ BI.Widget = BI.inherit(BI.OB, {
this._initElementHeight();
this._initVisual();
this._initState();
if (this.isVisible()) {
if (this.beforeInit) {
this.__asking = true;
this.beforeInit(BI.bind(this._render, this));
@ -61,6 +69,11 @@ BI.Widget = BI.inherit(BI.OB, {
} else {
this._render();
}
this.rendered = true
}
if (this._isRoot) {
this._mount()
}
},
_render: function () {
@ -172,7 +185,7 @@ BI.Widget = BI.inherit(BI.OB, {
_mount: function () {
var self = this;
var isMounted = this._isMounted;
if (isMounted || !this.isVisible() || this.__asking === true) {
if (this._isMounting || isMounted || !this.isVisible() || this.__asking === true) {
return;
}
if (this._isRoot === true) {
@ -183,15 +196,30 @@ BI.Widget = BI.inherit(BI.OB, {
if (!isMounted) {
return;
}
this._isMounting = true
if (!this.rendered) {
if (this.beforeInit) {
this.__asking = true;
this.beforeInit(BI.bind(this._render, this));
if (this.__asking === true) {
this.__async = true;
}
} else {
this._render();
}
}
this.beforeMount && this.beforeMount();
this._isMounted = true;
this._mountChildren && this._mountChildren();
lazy && this._mountChildren && this._mountChildren();
BI.each(this._children, function (i, widget) {
!self.isEnabled() && widget._setEnable(false);
!self.isValid() && widget._setValid(false);
widget._mount && widget._mount();
});
!lazy && this._mountChildren && this._mountChildren();
this.mounted && this.mounted();
this._isMounting = false
},
_mountChildren: null,
@ -467,4 +495,5 @@ BI.Widget = BI.inherit(BI.OB, {
this._purgeRef();
this.purgeListeners();
}
});
});
})();
Loading…
Cancel
Save