Vue.js 从 html 初始化对象 属性
Vue.js initialize object property from html
如何从 HTML 中设置组合 属性(例如 composed_prop.foo
)?
normal_prop 设置好但 composed_prop.foo 设置不好。
示例:
<div id="app">
<sample normal_prop=1 composed_prop.foo=1 />
</div>
<script>
Vue.component('sample',{
props: {
normal_prop: 0,
composed_prop: {
default:{
foo: 0,
bar: 0
}
}
}
})
new Vue({
el: "#app"
})
</script>
你必须这样做:
<div id="app">
<sample normal_prop=1 :composed_prop="{foo:10, bar:20}" />
</div>
请注意,您必须绑定 composed_prop 以便对表达式求值(而不是将其视为文字字符串)。另请注意,为 composed_prop 传递一个对象将完全覆盖您的默认值 - 它不会尝试将属性与默认值合并。所以,如果你只传入 {foo:10}
,那么 composed_prop.bar
将是未定义的。
最后一点……我认为 Object 道具的默认值应该是工厂函数。像这样:
Vue.component('sample',{
props: {
normal_prop: 0,
composed_prop: {
type: Object,
default:function(){ // should be a function
return { foo: 0, bar: 0 };
}
}
}
})
如何从 HTML 中设置组合 属性(例如 composed_prop.foo
)?
normal_prop 设置好但 composed_prop.foo 设置不好。
示例:
<div id="app">
<sample normal_prop=1 composed_prop.foo=1 />
</div>
<script>
Vue.component('sample',{
props: {
normal_prop: 0,
composed_prop: {
default:{
foo: 0,
bar: 0
}
}
}
})
new Vue({
el: "#app"
})
</script>
你必须这样做:
<div id="app">
<sample normal_prop=1 :composed_prop="{foo:10, bar:20}" />
</div>
请注意,您必须绑定 composed_prop 以便对表达式求值(而不是将其视为文字字符串)。另请注意,为 composed_prop 传递一个对象将完全覆盖您的默认值 - 它不会尝试将属性与默认值合并。所以,如果你只传入 {foo:10}
,那么 composed_prop.bar
将是未定义的。
最后一点……我认为 Object 道具的默认值应该是工厂函数。像这样:
Vue.component('sample',{
props: {
normal_prop: 0,
composed_prop: {
type: Object,
default:function(){ // should be a function
return { foo: 0, bar: 0 };
}
}
}
})