|
|
|
@ -7,7 +7,7 @@ import {
|
|
|
|
|
extend, |
|
|
|
|
isFunction, |
|
|
|
|
Widget, |
|
|
|
|
Providers |
|
|
|
|
Providers, emptyFn |
|
|
|
|
} from "@/core"; |
|
|
|
|
import { Fix } from "./fix"; |
|
|
|
|
|
|
|
|
@ -76,7 +76,7 @@ function popTarget() {
|
|
|
|
|
export const Model = Fix.Model; |
|
|
|
|
|
|
|
|
|
const oldWatch = Fix.watch; |
|
|
|
|
Fix.watch = function (model, expOrFn, cb, options) { |
|
|
|
|
Fix.watch = function(model, expOrFn, cb, options) { |
|
|
|
|
if (isPlainObject(cb)) { |
|
|
|
|
options = cb; |
|
|
|
|
cb = cb.handler; |
|
|
|
@ -89,7 +89,7 @@ Fix.watch = function (model, expOrFn, cb, options) {
|
|
|
|
|
this, |
|
|
|
|
model, |
|
|
|
|
expOrFn, |
|
|
|
|
function () { |
|
|
|
|
function() { |
|
|
|
|
options && options.store && pushTarget(options.store); |
|
|
|
|
let res; |
|
|
|
|
try { |
|
|
|
@ -142,9 +142,9 @@ export function createStore() {
|
|
|
|
|
if (this._store || this.options._store) { |
|
|
|
|
const store = Widget.findStore( |
|
|
|
|
this.options.context || |
|
|
|
|
this._parent || |
|
|
|
|
this.options.element || |
|
|
|
|
this._context |
|
|
|
|
this._parent || |
|
|
|
|
this.options.element || |
|
|
|
|
this._context |
|
|
|
|
); |
|
|
|
|
if (store) { |
|
|
|
|
pushTarget(store); |
|
|
|
@ -167,7 +167,7 @@ export function createStore() {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const _init = Widget.prototype._init; |
|
|
|
|
Widget.prototype._init = function () { |
|
|
|
|
Widget.prototype._init = function() { |
|
|
|
|
const needPop = createStore.call(this); |
|
|
|
|
try { |
|
|
|
|
_init.apply(this, arguments); |
|
|
|
@ -178,7 +178,7 @@ Widget.prototype._init = function () {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const __initWatch = Widget.prototype.__initWatch; |
|
|
|
|
Widget.prototype.__initWatch = function () { |
|
|
|
|
Widget.prototype.__initWatch = function() { |
|
|
|
|
__initWatch.apply(this, arguments); |
|
|
|
|
const workerMode = |
|
|
|
|
Providers.getProvider("bi.provider.system").getWorkerMode(); |
|
|
|
@ -191,7 +191,7 @@ Widget.prototype.__initWatch = function () {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const unMount = Widget.prototype.__destroy; |
|
|
|
|
Widget.prototype.__destroy = function () { |
|
|
|
|
Widget.prototype.__destroy = function() { |
|
|
|
|
try { |
|
|
|
|
unMount.apply(this, arguments); |
|
|
|
|
} catch (e) { |
|
|
|
@ -213,19 +213,38 @@ Widget.prototype.__destroy = function () {
|
|
|
|
|
delete this.__cacheStore; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Widget.prototype.__watch = function(getter, handler, options) { |
|
|
|
|
this._watchers = this._watchers || []; |
|
|
|
|
const watcher = new Fix.Watcher( |
|
|
|
|
null, |
|
|
|
|
() => getter.call(this, this), |
|
|
|
|
(handler && |
|
|
|
|
((v) => { |
|
|
|
|
handler.call(this, this, v); |
|
|
|
|
})) || |
|
|
|
|
emptyFn, |
|
|
|
|
extend({ deep: true }, options) |
|
|
|
|
); |
|
|
|
|
this._watchers.push(() => { |
|
|
|
|
watcher.teardown(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return watcher.value; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
_.each(["_render", "__afterRender", "_mount", "__afterMount"], (name) => { |
|
|
|
|
const old = Widget.prototype[name]; |
|
|
|
|
old && |
|
|
|
|
(Widget.prototype[name] = function () { |
|
|
|
|
this.store && pushTarget(this.store); |
|
|
|
|
let res; |
|
|
|
|
try { |
|
|
|
|
res = old.apply(this, arguments); |
|
|
|
|
} catch (e) { |
|
|
|
|
console.error(e); |
|
|
|
|
} |
|
|
|
|
this.store && popTarget(); |
|
|
|
|
(Widget.prototype[name] = function() { |
|
|
|
|
this.store && pushTarget(this.store); |
|
|
|
|
let res; |
|
|
|
|
try { |
|
|
|
|
res = old.apply(this, arguments); |
|
|
|
|
} catch (e) { |
|
|
|
|
console.error(e); |
|
|
|
|
} |
|
|
|
|
this.store && popTarget(); |
|
|
|
|
|
|
|
|
|
return res; |
|
|
|
|
}); |
|
|
|
|
return res; |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|