【发布时间】:2016-06-01 23:44:45
【问题描述】:
我有多个组件实例,它们的状态将由父级管理,所以我想通过组件上的 props 传递这个状态。 如果我在组件中定义了 prop 的默认对象属性,那么当我将一个空对象传递给它时,它们将被覆盖。
html:
<div id="app">
<my-component :state="state1"></my-component>
<my-component :state="state2"></my-component>
<my-component :state="state3"></my-component>
</div>
js:
var MyComponent = Vue.extend({
template: '<pre>{{ state | json }}</pre>',
props: {
state: {
type: Object,
default: function() {
return {
a: null,
b: [],
c: {}
}
}
}
}
})
Vue.component('my-component', MyComponent)
new Vue({
el: '#app',
data: {
state1: {
a: 1
},
state2: {},
state3: {
b: 2
},
}
})
查看示例:https://jsfiddle.net/pfmfdg8x/2/
那么如何在不定义父组件的所有潜在属性的情况下操作子组件的属性呢?如果该属性从一开始就不存在,则不会观察到更改。
【问题讨论】:
-
你试过vuejs.org/guide/components.html#Prop_Validation 吗?它基本上允许您忽略无效数据
标签: vue.js