|
|
@ -236,7 +236,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; |
|
|
|
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; |
|
|
|
|
|
|
|
|
|
|
|
var model = vm; |
|
|
|
var model = vm; |
|
|
|
if (!model.addWatch && model.$vm) { |
|
|
|
if (!model.$watch && model.$vm) { |
|
|
|
model = model.$vm; |
|
|
|
model = model.$vm; |
|
|
|
} |
|
|
|
} |
|
|
|
if (isPlainObject(cb)) { |
|
|
|
if (isPlainObject(cb)) { |
|
|
@ -250,7 +250,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
options.user = true; |
|
|
|
options.user = true; |
|
|
|
var exps = void 0; |
|
|
|
var exps = void 0; |
|
|
|
if (_$1.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { |
|
|
|
if (_$1.isFunction(expOrFn) || !(exps = expOrFn.match(/[a-zA-Z0-9_.*]+|[|][|]|[&][&]|[(]|[)]/g)) || exps.length === 1 && !/\*/.test(expOrFn)) { |
|
|
|
model.addWatch(expOrFn, cb, options); |
|
|
|
model.$watch(expOrFn, cb, options); |
|
|
|
|
|
|
|
|
|
|
|
return []; |
|
|
|
return []; |
|
|
|
} |
|
|
|
} |
|
|
@ -305,7 +305,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
return result; |
|
|
|
}; |
|
|
|
}; |
|
|
|
model.addWatch(getter, function (newValue, oldValue, attrs) { |
|
|
|
model.$watch(getter, function (newValue, oldValue, attrs) { |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
}, _$1.extend(options, { |
|
|
|
}, _$1.extend(options, { |
|
|
|
deep: isGlobal |
|
|
|
deep: isGlobal |
|
|
@ -349,13 +349,13 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
|
|
|
|
|
|
|
|
return currentModels; |
|
|
|
return currentModels; |
|
|
|
}; |
|
|
|
}; |
|
|
|
model.addWatch(_getter, function (newValue, oldValue, attrs) { |
|
|
|
model.$watch(_getter, function (newValue, oldValue, attrs) { |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
}, options); |
|
|
|
}, options); |
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
model.addWatch(exp, function (newValue, oldValue, attrs) { |
|
|
|
model.$watch(exp, function (newValue, oldValue, attrs) { |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
callback(i, newValue, oldValue, _$1.extend({ index: i }, attrs)); |
|
|
|
}, options); |
|
|
|
}, options); |
|
|
|
}); |
|
|
|
}); |
|
|
@ -487,26 +487,37 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
var allModelInstances = {}; |
|
|
|
var allModelInstances = {}; |
|
|
|
var emptyFn = function emptyFn() {}; |
|
|
|
var emptyFn = function emptyFn() {}; |
|
|
|
|
|
|
|
|
|
|
|
var Watcher = function Watcher(_ref) { |
|
|
|
var Watcher = function () { |
|
|
|
var get = _ref.get, |
|
|
|
function Watcher(_ref) { |
|
|
|
last = _ref.last, |
|
|
|
var get = _ref.get, |
|
|
|
listener = _ref.listener, |
|
|
|
last = _ref.last, |
|
|
|
sync = _ref.sync, |
|
|
|
listener = _ref.listener, |
|
|
|
deep = _ref.deep; |
|
|
|
sync = _ref.sync, |
|
|
|
|
|
|
|
deep = _ref.deep; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_classCallCheck(this, Watcher); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.get = get; |
|
|
|
|
|
|
|
this.last = cloneShadow(last); |
|
|
|
|
|
|
|
this.listener = listener || emptyFn; |
|
|
|
|
|
|
|
this.sync = sync || false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
get: this.get, |
|
|
|
|
|
|
|
last: this.last, |
|
|
|
|
|
|
|
listener: this.listener |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_classCallCheck(this, Watcher); |
|
|
|
// 不要去掉,为了兼容IE8,IE8下instance of Constructor如果不绑定函数会出错
|
|
|
|
|
|
|
|
|
|
|
|
this.get = get; |
|
|
|
|
|
|
|
this.last = cloneShadow(last); |
|
|
|
|
|
|
|
this.listener = listener || emptyFn; |
|
|
|
|
|
|
|
this.sync = sync || false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return { |
|
|
|
Watcher.prototype.getInstance = function getInstance() { |
|
|
|
get: this.get, |
|
|
|
return this; |
|
|
|
last: this.last, |
|
|
|
|
|
|
|
listener: this.listener |
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
return Watcher; |
|
|
|
|
|
|
|
}(); |
|
|
|
|
|
|
|
|
|
|
|
function initState(vm, state) { |
|
|
|
function initState(vm, state) { |
|
|
|
var watchers = vm._stateWatchers = {}; |
|
|
|
var watchers = vm._stateWatchers = {}; |
|
|
@ -628,7 +639,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
var p = vm._parent; |
|
|
|
var p = vm._parent; |
|
|
|
while (p) { |
|
|
|
while (p) { |
|
|
|
if (p.childContext && p.childContext.indexOf(key) > -1) { |
|
|
|
if (p.childContext && p.childContext.indexOf(key) > -1) { |
|
|
|
p.addWatch(key, function (cur, last, p) { |
|
|
|
p.$watch(key, function (cur, last, p) { |
|
|
|
if (!vm.alive) return; |
|
|
|
if (!vm.alive) return; |
|
|
|
vm.model[key] = cur; |
|
|
|
vm.model[key] = cur; |
|
|
|
vm._contextWatchers[key].last = cloneShadow(cur); // 避免重复调用(可以改成给watch添加一个参数保证下次比较一定相同)
|
|
|
|
vm._contextWatchers[key].last = cloneShadow(cur); // 避免重复调用(可以改成给watch添加一个参数保证下次比较一定相同)
|
|
|
@ -749,6 +760,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
var watchers = [].concat(vm._watchers); |
|
|
|
var watchers = [].concat(vm._watchers); |
|
|
|
|
|
|
|
|
|
|
|
_$1.each(watchers, function (watcher) { |
|
|
|
_$1.each(watchers, function (watcher) { |
|
|
|
|
|
|
|
if (!watcher) return; |
|
|
|
var cur = watcher.get(); |
|
|
|
var cur = watcher.get(); |
|
|
|
var last = watcher.last; |
|
|
|
var last = watcher.last; |
|
|
|
|
|
|
|
|
|
|
@ -816,7 +828,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons |
|
|
|
|
|
|
|
|
|
|
|
Model.prototype._init = function _init() {}; |
|
|
|
Model.prototype._init = function _init() {}; |
|
|
|
|
|
|
|
|
|
|
|
Model.prototype.addWatch = function addWatch(expOrFn, cb, options) { |
|
|
|
Model.prototype.$watch = function $watch(expOrFn, cb, options) { |
|
|
|
var watcher = createWatcher(this, expOrFn, cb, options); |
|
|
|
var watcher = createWatcher(this, expOrFn, cb, options); |
|
|
|
this._watchers.push(watcher); |
|
|
|
this._watchers.push(watcher); |
|
|
|
}; |
|
|
|
}; |
|
|
|