From bf9492def62bc5aec625675996409b15465f9af0 Mon Sep 17 00:00:00 2001 From: "Jimmy.Chai" Date: Thu, 11 May 2023 22:17:56 +0800 Subject: [PATCH] =?UTF-8?q?BI-126352=20fix:=20=E4=BB=AA=E8=A1=A8=E6=9D=BF?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/fix/fix.js | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/dist/fix/fix.js b/dist/fix/fix.js index 9a106ae7a..e87c7e51a 100644 --- a/dist/fix/fix.js +++ b/dist/fix/fix.js @@ -919,23 +919,27 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons return m; } : parsePath(exp); var v = getter.call(model, model); - var _dep = new Dep(); - if (isGlobal) { - (v.__ob__._scopeDeps || (v.__ob__._scopeDeps = [])).push(_dep); - } else { - (v.__ob__._deps || (v.__ob__._deps = [])).push(_dep); + + if (v.__ob__) { + var _dep = new Dep(); + if (isGlobal) { + (v.__ob__._scopeDeps || (v.__ob__._scopeDeps = [])).push(_dep); + } else { + (v.__ob__._deps || (v.__ob__._deps = [])).push(_dep); + } + var _w = new Watcher(model, function () { + _dep.depend(); + return NaN; + }, function (newValue, oldValue, attrs) { + callback(i, newValue, oldValue, BI._.extend({ index: i }, attrs)); + }, options); + watchers.push(function unwatchFn() { + _w.teardown(); + v.__ob__._scopeDeps && remove(v.__ob__._scopeDeps, _dep); + v.__ob__._deps && remove(v.__ob__._deps, _dep); + }); } - var _w = new Watcher(model, function () { - _dep.depend(); - return NaN; - }, function (newValue, oldValue, attrs) { - callback(i, newValue, oldValue, BI._.extend({ index: i }, attrs)); - }, options); - watchers.push(function unwatchFn() { - _w.teardown(); - v.__ob__._scopeDeps && remove(v.__ob__._scopeDeps, _dep); - v.__ob__._deps && remove(v.__ob__._deps, _dep); - }); + return; } // **.a.**的情况,场景:a.b.c, 如果用b.**监听, a被重新赋值b上的_scopeDes就不存在了 @@ -943,6 +947,11 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons //先获取到能获取到的对象 var _paths = exp.split("."); var _currentModel = model[_paths[1]]; + + if (!_currentModel.__ob__) { + return; + } + exp = _paths[1] + ".**"; //补全路径 var _parent = _currentModel.__ob__.parent, @@ -993,6 +1002,11 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons } currentModel = model[paths[_i]]; } + + if (!currentModel.__ob__) { + return; + } + exp = exp.substr(exp.indexOf("*")); //补全路径 var parent = currentModel.__ob__.parent,