Vueにおけるwatchの簡単な応用

13188 ワード

Vueにおけるwatchの簡単な応用
  • Vueにおけるwatchの簡単な応用
  • demo1
  • demo2
  • demo3

  • Vueにおけるwatchの簡単な応用
    Vue.jsには、Vueインスタンス上のデータ変動を監視するための方法watchがある.
    オブジェクトに対応する場合、キーがルックアップ式、値がコールバック、値はメソッド名、またはオブジェクトで、オプションが含まれます.
    次は2つのdemoを書いて、demoを参考にして理解してみましょう
    demo1
    <template>
      <div>
        <el-input v-model="demo"></el-input>
        {{value}}
      </div>
    </template>
    <script>
      export default {
        name: 'index',
        data() {
          return {
            demo: '',
            value: ''
          };
        },
        watch: {
          demo(val) {
            this.value = this.demo;
          }
        }
      };
    </script>
    

    上のほうがわかりやすく、watchでdemoを直接監視し、demoの値が変化すればvalueの値も一緒に変化します.
    demo2
    <template>
      <div>
        <el-input v-model="demo.name"></el-input>
        {{value}}
      </div>
    </template>
    <script>
      export default {
        name: 'index',
        data() {
          return {
            demo: {
              name: ''
            },
            value: ''
          };
        },
        computed: {
          newName() {
            return this.demo.name;
          }
        },
        watch: {
          newName(val) {
            this.value = val;
          }
        }
      };
    </script>
    

    上記の例では、watchがオブジェクトである場合、watchを直接使用することはできません.この場合、computed計算プロパティを使用して完了できます.
    demo3
    <div id="app">
      <input type="text" v-model="childrens.name" />
      <input type="text" v-model="lastName" />
    </div>
    
    <script type="text/javascript">
      var vm = new Vue( {
        el: '#app',
        data: {
          childrens: {
            name: '  ',
            age: 20,
            sex: ' '
          },
          tdArray:["1","2"],
          lastName:"  "
        },
        watch:{
          childrens:{
            handler:function(val,oldval){
              console.log(val.name)
            },
            deep:true//         ,      
          },
          'childrens.name':function(val,oldval){
            console.log(val+"aaa")
          },//         
          lastName:function(val,oldval){
            console.log(this.lastName)
          }
        },// V-model              
      } );
      vm.$watch("lastName",function(val,oldval){
        console.log(val)
      })//    $watch         
    </script>
    </body>
    

    配列の変化は、深さwatchを必要としません.