vue基础,watch‘监听和handler方法,immediate和deep属性

  • Post author:
  • Post category:vue


监听:监听数据源的一个数据改变引起其他数据改变的方法;

只要监听的数据改变就执行该数据的方法;

方法里:第一个参数是监听数据的最新的值,第二个参数是监听的数据的上一次的值;

注意:如果监听的是对象要加上deep:true深度监听属性

有监听路由$router;数据监听等

这里写个简单的需求,text++引起val获得text*100的实现

 <p>{{text}}</p>
    <button @click="changeText">++</button>
    <input type="text" v-model="val">
  </div>
</template>

<script>
export default {
  name: "First",
  data(){
    return {
      text:1,
      val:''
    }
  },
  methods:{
      changeText(){
        this.text++
      },
  },
   watch:{
监听text属性的变化,参数1是更新的数据,参数2是上次的数据
    text: function (val,old){
      this.val = val*100
      this.old = old
    },
监听属性是对象的话进行深度监听
deep:true
    }

还有监听方法的完善:handler方法,里面有immediate和deep属性

handler方法里面有两个参数,和上面一样,第一个参数是新数据,第二个参数是上一次的数据;

immediate属性指的是是否先执行一次(true指的是监听的数据源还没有改变的时候先执行一次)

deep是否深度监听

<button @click="changeText">++</button>
    <input type="text" v-model="val" />
    <input type="text" v-model="old" />
  </div>
</template>

<script>
export default {
  name: "First",
  data() {
    return {
      text: 1,
      val: "",
      old: "",
    };
  },
  methods: {
    changeText() {
      this.text++;
    },
  },
  watch: {
    text: {
      handler(newV, oldV) {
        this.val = newV* 100;
        this.old = oldV;
      },
      //true指的是数据还没有改变,上来就先执行一次监听
      // immediate: true,
      // 监听对象的话要用深度监听
      // deep: true,
    },

immediate:false的话;

immediate:true的话;上来先执行一次*100



版权声明:本文为m0_64207574原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。