vuejs如何在每次更改数组时运行emit

时间:2018-04-05 22:14:28

标签: javascript vue.js

我在这个子组件中有一个数组:

arrayChild: 
    [
    {name: 'name1', text: 'text1', buttons: 'false', active: "true"}, 
    {name: 'name2', text: 'text2', buttons: 'false', active: "false"}, 
    ...
    ]

我想在nametextactive(不是buttons更改!)

的每次更改时发出arrayChild

我该怎么做?

我创建了基本功能,可以通过点击按钮发出此信息:

<btn @click="emitParent()">emit my Array</btn>

  emitUp() {
    this.$emit('offerArray', this.arrayChild)
  }

但它仅在按钮点击时发出。我需要在名称,文本和活动内的任何更改时自动发出此信息。我该怎么做?我应该使用某种计算机吗?

1 个答案:

答案 0 :(得分:4)

  

Vue.js提供watchers!所以你可以“观察”一个属性,当你做出改变时,你可以做一些事情。见下文:

export default {
  data() {
     return {
       propertyName: 'valueOfProperty'
     }
  },
  watch: {
    propertyName(theNewChangedValue) {
      //do stuff here
    }
  }
}
  

还要考虑深度观察者,这在处理对象数组时非常有用

    propertyName: {
        handler: function(newValue) {
            //do stuff when array of object changes
        },
        deep: true
    }