diff --git a/src/platforms/app-plus/service/framework/plugins/data.js b/src/platforms/app-plus/service/framework/plugins/data.js index d3bb00b988b22846b50e5cb76372bbb90116a914..97000da68d8487e26b8ed0d821f38926c1d2cbb2 100644 --- a/src/platforms/app-plus/service/framework/plugins/data.js +++ b/src/platforms/app-plus/service/framework/plugins/data.js @@ -6,7 +6,7 @@ import { import { MOUNTED_DATA, - UPDATED_DATA, + UPDATED_DATA, VD_SYNC_VERSION } from '../../../constants' @@ -137,6 +137,10 @@ function parseExternalClasses (clazz, vm) { return clazz } +function isNotSafeString (value) { + return value === 'null' || value === 'true' || value === 'false' || !isNaN(Number(value)) || (value.startsWith('[') && value.endsWith(']')) || (value.startsWith('{') && value.endsWith('}')) +} + function setData (id, name, value) { switch (name) { case B_CLASS: @@ -157,7 +161,7 @@ function setData (id, name, value) { return setForData.call(this, id, value) } // TODO 暂时先传递 dataset 至 view 层(理论上不需要) - if (name.indexOf('a-data-') === 0) { + if (name.indexOf('a-data-') === 0 && (typeof value !== 'string' || isNotSafeString(value))) { try { value = JSON.stringify(value) } catch (e) {} @@ -203,4 +207,4 @@ function setForData (id, value) { (vForData[forIndex] || (vForData[forIndex] = {}))['k' + value.keyIndex] = key } return key -} +}