vue js prop等于v-model

时间:2020-01-19 15:40:44

标签: vue.js vue-component v-model vue-props

当我在挂接钩中将v-model设置为props时,为什么更改也会对props产生影响。

export default{
  props: {
    initial_value: Array,
  },

  data(){
     return { component_value: [] }
  },

   mounted(){
     this.component_value = this.initial_value;
   }
}

因此,当我对component_value进行一些更改时,也会影响initial_value。

我想在这里写完整的代码,但只是尝试使其简短。

3 个答案:

答案 0 :(得分:1)

最简单的方法是克隆您的public function getNestedObject(): NestedObject { $json = $this->nestedObject; $nestedObject = new NestedObject(); $nestedObject->setX($json['x']); ... // rest of setters return $nestedObject; }

您可以这样做:

initial_value

这应该有效。

您可以查看更多答案here

答案 1 :(得分:1)

在安装挂钩中更改您的代码,如下所示

mounted() {
   this.component_value = JSON.parse(JSON.stringify(this.initial_value));
}

它将this.initial_value变量的值不仅仅通过引用而是通过其数据。 在JavaScript中,变量可以存储两种类型的数据:原始数据和引用。并且this.initial_value具有参考数据,因为它的类型是数组。有关更多说明,请阅读本文source

答案 2 :(得分:0)

export default{
  props: ['initial_value'],

  data(){
     return { component_value: this.initial_value }
  }

}

这应该有效。

编辑:

如果您要连续更改道具(反应性),则必须使用这样的计算属性

computed: { 
      component_value(){ 
           return JSON.parse(JSON.stringify(this.initial_value) 
          } 
   }

致谢