Browse Source

DEC-8536 fix : 修复 _mount执行中断导致context指向错误问题.

es6
dailer 5 years ago
parent
commit
fbfeaa5021
  1. 24
      dist/fix/fix.compact.js

24
dist/fix/fix.compact.js vendored

@ -1,5 +1,5 @@
;(function () { ;(function () {
function initWatch(vm, watch) { function initWatch (vm, watch) {
vm._watchers || (vm._watchers = []); vm._watchers || (vm._watchers = []);
for (var key in watch) { for (var key in watch) {
var handler = watch[key]; 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), { return Fix.watch(vm.model, keyOrFn, _.bind(handler, vm), {
store: vm.store store: vm.store
}); });
@ -22,24 +22,24 @@
var target = null; var target = null;
var targetStack = []; var targetStack = [];
function pushTarget(_target) { function pushTarget (_target) {
if (target) targetStack.push(target); if (target) targetStack.push(target);
Fix.Model.target = target = _target; Fix.Model.target = target = _target;
} }
function popTarget() { function popTarget () {
Fix.Model.target = target = targetStack.pop(); Fix.Model.target = target = targetStack.pop();
} }
var context = null; var context = null;
var contextStack = []; var contextStack = [];
function pushContext(_context) { function pushContext (_context) {
if (context) contextStack.push(context); if (context) contextStack.push(context);
Fix.Model.context = context = _context; Fix.Model.context = context = _context;
} }
function popContext() { function popContext () {
Fix.Model.context = context = contextStack.pop(); Fix.Model.context = context = contextStack.pop();
} }
@ -60,7 +60,7 @@
}, options); }, options);
}; };
function findStore(widget) { function findStore (widget) {
if (target != null) { if (target != null) {
return target; return target;
} }
@ -106,7 +106,7 @@
}; };
}); });
function createStore() { function createStore () {
var needPop = false; var needPop = false;
if (_global.Fix && this._store) { if (_global.Fix && this._store) {
var store = findStore(this.options.context || this.options.element); var store = findStore(this.options.context || this.options.element);
@ -172,7 +172,11 @@
var old = BI.Widget.prototype[name]; var old = BI.Widget.prototype[name];
old && (BI.Widget.prototype[name] = function () { old && (BI.Widget.prototype[name] = function () {
this.store && pushTarget(this.store); this.store && pushTarget(this.store);
var res = old.apply(this, arguments); try {
var res = old.apply(this, arguments);
} catch (e) {
console.error(e);
}
this.store && popTarget(); this.store && popTarget();
return res; return res;
}); });
@ -246,4 +250,4 @@
}; };
} }
BI.watch = Fix.watch; BI.watch = Fix.watch;
}()); }());

Loading…
Cancel
Save