diff --git a/src/platforms/app-plus/service/framework/plugins/data.js b/src/platforms/app-plus/service/framework/plugins/data.js index 48d15de20a6bd1be6b9c4d42f9118c59be44d655..fa85bd9dad67078ca34e2f0edddf48dfa5c8008b 100644 --- a/src/platforms/app-plus/service/framework/plugins/data.js +++ b/src/platforms/app-plus/service/framework/plugins/data.js @@ -155,6 +155,11 @@ function setData (id, name, value) { break case V_FOR: return setForData.call(this, id, value) + case 'is': { + if (typeof value === 'function') { + value = value.options + } + } } return ((this._$newData[id] || (this._$newData[id] = {}))[name] = value) diff --git a/src/platforms/app-plus/view/framework/plugins/data.js b/src/platforms/app-plus/view/framework/plugins/data.js index 6219aae0c5ddc5cb591ce5c5cd19384d6a38144a..c1adf8984e33779a5872926af6e364b9d85545a2 100644 --- a/src/platforms/app-plus/view/framework/plugins/data.js +++ b/src/platforms/app-plus/view/framework/plugins/data.js @@ -114,7 +114,18 @@ function vdSync ({ function getData (id, name) { try { - return this.$r[id][name] + const data = this.$r[id][name] + if (name === 'is' && typeof data === 'object') { + const components = this.$options.components || {} + for (const key in components) { + const value = components[key] + const options = typeof value === 'function' ? value.options : value + if (options.__file === data.__file) { + return options + } + } + } + return data } catch (e) { // console.error(this.$options.__file + `:[${this._$id}]$r[${id}][${name}] is undefined`) }