Browse Source

context重构

es6
guy 4 years ago
parent
commit
5a17741692
  1. 44
      dist/fix/fix.compact.ie.js
  2. 54
      dist/fix/fix.compact.js
  3. 3
      src/core/shortcut.js
  4. 35
      src/core/widget.js

44
dist/fix/fix.compact.ie.js vendored

@ -36,18 +36,6 @@
Fix.Model.target = target = targetStack.pop();
}
var context = null;
var contextStack = [];
function pushContext(_context) {
if (context) contextStack.push(context);
Fix.Model.context = context = _context;
}
function popContext() {
Fix.Model.context = context = contextStack.pop();
}
var oldWatch = Fix.watch;
Fix.watch = function (model, expOrFn, cb, options) {
if (BI.isPlainObject(cb)) {
@ -86,20 +74,20 @@
}
}
var _create = BI.createWidget;
BI.createWidget = function (item, options, context) {
var pushed = false;
if (BI.isWidget(options)) {
pushContext(options);
pushed = true;
} else if (context != null) {
pushContext(context);
pushed = true;
}
var result = _create.apply(this, arguments);
pushed && popContext();
return result;
};
// var _create = BI.createWidget;
// BI.createWidget = function (item, options, context) {
// var pushed = false;
// if (BI.isWidget(options)) {
// pushContext(options);
// pushed = true;
// } else if (context != null) {
// pushContext(context);
// pushed = true;
// }
// var result = _create.apply(this, arguments);
// pushed && popContext();
// return result;
// };
BI.watch = function (watch, handler) {
if (BI.Widget.current) {
@ -124,9 +112,9 @@
_.each(["populate", "addItems", "prependItems"], function (name) {
var old = BI.Loader.prototype[name];
BI.Loader.prototype[name] = function () {
pushContext(this);
BI.Widget.pushContext(this);
var result = old.apply(this, arguments);
popContext();
BI.Widget.popContext();
return result;
};
});

54
dist/fix/fix.compact.js vendored

@ -36,18 +36,6 @@
Fix.Model.target = target = targetStack.pop();
}
var context = null;
var contextStack = [];
function pushContext (_context) {
if (context) contextStack.push(context);
Fix.Model.context = context = _context;
}
function popContext () {
Fix.Model.context = context = contextStack.pop();
}
var oldWatch = Fix.watch;
Fix.watch = function (model, expOrFn, cb, options) {
if (BI.isPlainObject(cb)) {
@ -90,25 +78,25 @@
}
}
var _create = BI.createWidget;
BI.createWidget = function (item, options, context) {
var pushed = false;
if (BI.isWidget(options)) {
pushContext(options);
pushed = true;
} else if (context != null) {
pushContext(context);
pushed = true;
}
var result = _create.apply(this, arguments);
// try {
// var result = _create.apply(this, arguments);
// } catch (e) {
// console.error(e);
// }
pushed && popContext();
return result;
};
// var _create = BI.createWidget;
// BI.createWidget = function (item, options, context) {
// var pushed = false;
// if (BI.isWidget(options)) {
// pushContext(options);
// pushed = true;
// } else if (context != null) {
// pushContext(context);
// pushed = true;
// }
// var result = _create.apply(this, arguments);
// // try {
// // var result = _create.apply(this, arguments);
// // } catch (e) {
// // console.error(e);
// // }
// pushed && popContext();
// return result;
// };
BI.watch = function (watch, handler) {
if (BI.Widget.current) {
@ -133,13 +121,13 @@
_.each(["populate", "addItems", "prependItems"], function (name) {
var old = BI.Loader.prototype[name];
BI.Loader.prototype[name] = function () {
pushContext(this);
BI.Widget.pushContext(this);
try {
var result = old.apply(this, arguments);
} catch (e) {
console.error(e);
}
popContext();
BI.Widget.popContext();
return result;
};
});

3
src/core/shortcut.js

@ -19,12 +19,13 @@
}
var widget = new cls();
BI.Widget.pushContext(widget);
widget._initProps(config);
widget._initRoot();
if (!lazy || config.element || config.root) {
widget._lazyConstructor();
}
BI.Widget.popContext();
return widget;
};

35
src/core/widget.js

@ -506,36 +506,45 @@
this.purgeListeners();
}
});
var context = null;
var contextStack = [];
var context = null, current = null;
var contextStack = [], currentStack = [];
function pushTarget (_context) {
BI.Widget.pushContext = function (_context) {
if (context) contextStack.push(context);
BI.Widget.current = context = _context;
BI.Widget.context = context = _context;
};
BI.Widget.popContext = function () {
BI.Widget.context = context = contextStack.pop();
};
function pushTarget (_current) {
if (current) currentStack.push(current);
BI.Widget.current = current = _current;
}
function popTarget () {
BI.Widget.current = context = contextStack.pop();
BI.Widget.current = current = currentStack.pop();
}
BI.onBeforeMount = function (beforeMount) {
if (context) {
context.beforeMount = beforeMount;
if (current) {
current.beforeMount = beforeMount;
}
};
BI.onMounted = function (mounted) {
if (context) {
context.mounted = mounted;
if (current) {
current.mounted = mounted;
}
};
BI.onBeforeUnmount = function (beforeDestroy) {
if (context) {
context.beforeDestroy = beforeDestroy;
if (current) {
current.beforeDestroy = beforeDestroy;
}
};
BI.onUnmounted = function (destroyed) {
if (context) {
context.destroyed = destroyed;
if (current) {
current.destroyed = destroyed;
}
};

Loading…
Cancel
Save