如何在Vue.js组件中观看prop更改?

时间:2017-03-24 12:16:31

标签: javascript vue.js vuejs2 vue-component

我将一组图像文件路径传递给组件。 我想知道如果我传递一个不同的数组,在Vue.js组件中观察道具更改的最佳方法是什么?

我正在使用自举旋转木马,所以想要在阵列更改时将其重置为第一张图像。 为了简单起见,我将代码示例简化为:

Vue.component('my-images', {
  props: ['images'],

  template: `
    <section>
      <div v-for="(image, index) in images">
        {{index}} - <img :src="image"/>
      </div>
    </section>
  `
});

3 个答案:

答案 0 :(得分:15)

<template>
  <div>
    {{count}}</div>
</template>

<script>
export default {
  name: 'test',
  props: ['count'],
  watch: {
    '$props':{
      handler: function (val, oldVal) { 
        console.log('watch', val)
      },
      deep: true
    }
  },
  mounted() {
    console.log(this.count)
  }
}
</script>

答案 1 :(得分:2)

你很高兴接受这个:

Vue.component('my-images', {
  props: ['images'],
  computed: {
    imagesComputed: function () {
      // just an example of processing `images` props
      return this.images.filter((each, index) => index > 0);
    }
  },
  template: `
    <section>
      <div v-for="(image, index) in imagesComputed">
        {{index}} - <img :src="image"/>
      </div>
    </section>
  `
});

答案 2 :(得分:0)

打字稿示例

  @Prop()
  options: any[];

  @Watch('options', {immediate: true})
  optionsChanged(newVal: any[]) {
    console.log('options changed ', newVal);
  }