Vue V-для объекта реквизита - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь передать объект массива компоненту, но ничего не получаю

create.vue

<el-row >
      <component1 v-for="product in products" :value="product" :key="product.id"></component1>
</el-row> 

// раздел скрипта

data() {
    return {
       products: []  //there have (id = 1, name = first), (id = 2, name = second)
    }
}

component1.vue

<el-row>
  <div>
    {{ product.name }}
  </div>
</el-row>  

export default {
props: ['value'],
watch: {
  value: {
    hander: function (val) {
      console.log(val);

      this.product = {
        id: val.id,
        name: val.name
      } 
    },
    deep: true
  }
},
data() {
  return {
    product: {
      id: null,
      name: null
    }       
  }    
},  

но часы не работают ({{product.name}} имеет значение null), почему?или как это исправить?

1 Ответ

0 голосов
/ 17 ноября 2018

Вы пытаетесь просмотреть свойство, которое не меняется, в вашем примере я не понимаю необходимости использования свойства watch, но вы можете добиться этого, назначив value свойству данных с именем product в хуке жизненного цикла mounted следующим образом:

<el-row>
  <div>
    {{ product.name }}
  </div>
</el-row>  

export default {
props: ['value'],
watch: {
  value: {
    handler: function (val) {
      console.log(val);

      this.product = {
        id: val.id,
        name: val.name
      } 
    },
    deep: true
  }
},
data() {
  return {
    product: {
      id: null,
      name: null
    }       
  }    
},
mounted(){
this.product= {
        id: this.value.id,
        name: this.value.name
      } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...