将整个数据对象作为道具

时间:2016-10-11 18:23:25

标签: vue.js

是否可以在Vue中将整个data对象作为道具传递?

例如

Vue.component('comp', {
  props: ['allData'],
  template: '<div>{{allData.msg}}</div>'
})

new Vue({
 el: "#test",
 data: {
   msg: "Hello"
 }
})

在我的视图

<div id="test">
  <comp :allData="data"></comp>
</div>

2 个答案:

答案 0 :(得分:4)

这可能是这样的:

<div id="test">
  <comp :allData="$data"></comp>
</div>

但是,变异组件中的allData会影响父级的状态,因为它是一个对象。请参阅以下Vue 1.0 docs的警告:

  

请注意,如果传递的prop是Object或Array,则通过引用传递它。无论您使用何种绑定类型,在子项内部对象或数组本身的变换都会影响父状态。

Vue 2.0 docs

  

请注意,JavaScript中的对象和数组是通过引用传递的,因此如果prop是数组或对象,则在子项内部变换对象或数组本身会影响父状态。

答案 1 :(得分:2)

您可以通过$data访问整个对象,然后传递它。

但它通常不是最好的想法。