Vuejs - Set" global" prop不使用v-model编辑所有属性

时间:2018-04-10 19:33:01

标签: vue.js vuejs2 vue-component

假设我有以下组件:

<c-attachs v-for="item in attachs" v-bind:path="item.path"></c-attachs>

尝试直接从某些方法编辑某些属性,例如:

methods: {
    changeProp: function ()
    {
        this.path = 'myNewString';
    }
}

Vuejs在控制台上发出警告:

  

避免直接改变道具,因为只要父组件重新渲染

,该值就会被覆盖

但是......如果我设置&#34; v-bind:allprops =&#34; item&#34;并通过&#34; allprops&#34;直接编辑属性对象(如下面的代码),它没有错误地工作正常。我的疑问是......这是在不使用v-model的情况下编辑事件属性的正确方法吗?

this.allprops.path = 'myNewString';

1 个答案:

答案 0 :(得分:0)

没有正确的编辑道具的方法,因为你不应该编辑它们。

每个组件都应该完全控制自己的data。这使得行为易于推理。作为props传递给子项的项应该被视为只读项,以便这些项的所有者保留控制权。这就是为什么Vue有events

如果某个组件中的某些内容会影响该组件不拥有的数据,则该组件应issue an event,以便数据项的所有者可以处理它。如果数据项的所有者更改其值,则该更改将通过道具向下流动。