vue-watch監聽的方法


在vue中,很多時候需要實時了解數據的變化執行相應的操作,通過watch監聽能實現相應需求。

<div>
      <p>inputOne: <input type="text" v-model="value1"></p>
      <p>inputTwo: <input type="text" v-model="valueObj.value2"></p>
</div>    

1、注冊watch

export default {
    name: 'demo',
    watch: {
    value1(newVlue, oldValue) {
      this.value = newValue + 'bbb'
      console.log(this.value)
    }
  }, data() { return {
      value: 'aaa', value1:'', valueObj: { value2: '', } } } }

在inputOne輸入123后,監聽到value1的改變,打印出value的值:123bbb

2、handler方法

  watch中需要具體執行的方法,監聽數組或對象的屬性時用到的方法

    watch: {
    value1:{
                handler(newVal,oldVal){
                    this.value = newVal + 'ccc'
                },
                immediate:true
           }
    },    

 

3、immediate屬性

  在選項參數中指定 immediate: true 將立即以表達式的當前值觸發回調,默認為false

 4、deep屬性

  監聽對象或對象中的屬性,需要使用deep,即深度監聽。

  在對象中層層遍歷,並在監聽對象上的每一個屬性上都添加監聽,當然這樣也會損耗性能。

  watch: {
    valueObj:{
                handler(newVal,oldVal){
                    this.value = newVal + ddd'
                },
                deep:true
           }
    },  

或者:直接監聽屬性,避免給所有屬性監聽而損耗性能。
  watch: {
    'valueObj.value2':{
                handler(newVal,oldVal){
                    this.value = newVal + 'eee' },
           immediate: true,  deep:true } },
 
        

5、watch監聽路由

watch: {
    '$route'(to,from){
      console.log(to);   //to表示去往的界面
      console.log(from); //from表示來自於哪個界面
      if(to.path=="/home"){
        console.log("路由跳轉home");
      }
    }
  },


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM