提交 25314852 编写于 作者: fxy060608's avatar fxy060608

fix(v3): mp runtime format props value

上级 c911297f
......@@ -595,9 +595,7 @@ function validateProp (key, propsOptions, propsData, vm) {
if (value !== undefined) {
const propOptions = propsOptions[key];
const type = getType(propOptions);
if (type === Boolean) {
value = !!value;
}
value = formatVal(value, type);
const observer = propOptions && propOptions.observer;
if (observer) {
// 初始化时,异步触发 observer,否则 observer 中无法访问 methods 或其他
......@@ -610,6 +608,15 @@ function validateProp (key, propsOptions, propsData, vm) {
return getPropertyVal(propsOptions[key])
}
function formatVal (val, type) {
if (type === Boolean) {
return !!val
} else if (type === String) {
return String(val)
}
return val
}
function observe (observer, vm, newVal, oldVal) {
try {
if (typeof observer === 'function') {
......@@ -665,12 +672,7 @@ function updateProperties (vm) {
if (propsData && properties) {
Object.keys(properties).forEach(key => {
if (hasOwn(propsData, key)) {
const type = getType(properties[key]);
if (type === Boolean) {
vm[key] = !!propsData[key];
} else {
vm[key] = propsData[key];
}
vm[key] = formatVal(propsData[key], getType(properties[key]));
}
});
}
......
......@@ -39,9 +39,7 @@ function validateProp (key, propsOptions, propsData, vm) {
if (value !== undefined) {
const propOptions = propsOptions[key]
const type = getType(propOptions)
if (type === Boolean) {
value = !!value
}
value = formatVal(value, type)
const observer = propOptions && propOptions.observer
if (observer) {
// 初始化时,异步触发 observer,否则 observer 中无法访问 methods 或其他
......@@ -54,6 +52,15 @@ function validateProp (key, propsOptions, propsData, vm) {
return getPropertyVal(propsOptions[key])
}
function formatVal (val, type) {
if (type === Boolean) {
return !!val
} else if (type === String) {
return String(val)
}
return val
}
function observe (observer, vm, newVal, oldVal) {
try {
if (typeof observer === 'function') {
......@@ -109,12 +116,7 @@ export function updateProperties (vm) {
if (propsData && properties) {
Object.keys(properties).forEach(key => {
if (hasOwn(propsData, key)) {
const type = getType(properties[key])
if (type === Boolean) {
vm[key] = !!propsData[key]
} else {
vm[key] = propsData[key]
}
vm[key] = formatVal(propsData[key], getType(properties[key]))
}
})
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册