zoukankan      html  css  js  c++  java
  • Vue.set全局操作

    Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法。比如在vue构造器内部定义了一个count为1的数据,我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue.set。
    // 构造器外部数据
         wrapData ={
            number:1
         }
           var vm = new Vue({
                el:"#app",
                data:wrapData,  //引入外部数据(非内部构造器里面的)
                methods:{
                    add:function(){
                        this.number++;
                    }
                }
           })

    html

    <div id="app">
      <!-- <button v-on:click="add">数据变化</button> -->
      <button onclick="add()">数据变化</button>
      <div>{{number}}</div>
    </div>
    在外部改变数据的三种方法    这些个button按钮都是写在外部 ,而不在new  vue({})作用域里面
    1、用Vue.set改变
     function add(){
           Vue.set(wrapData,'number',4);
     }
    2、用Vue对象的方法添加
     function wrapAdd2(){
             vm.number++;
           }
    3、直接操作外部数据
     function wrapAdd3(){
          wrapData.number++;
       }
    为什么要有Vue.set的存在?
    由于Javascript的限制,Vue不能自动检测以下变动的数组。
    *当你利用索引直接设置一个项时,vue不会为我们自动更新。
    *当你修改数组的长度时,vue不会为我们自动更新。
    上面不是说到了三种改变number值得方法吗,如果是改变数组,通过下标,那三种方式中只有Vue.set会起作用,这也就是它存在的意义

    html

    <div id="app">
            <!-- <span v-text="number"></span> -->
            <ul>
                <li v-for="item of items">{{item}}</li>
            </ul>
        </div>

    js

    function  wrapAdd(){
               // vm.items[0]=12; //外部调用vue属性方法不起作用
               // wrapData[0]=12; //外部直接操作数组也是不起作用
               // 这时候Vue.set在对数组方面就凸显出用处了
               Vue.set(vm.items,1,12)
          }
        var wrapData =[20,30,45]
    
           var vm = new Vue({
                el:"#app",
                data:{
                    items:wrapData
                }  //引入外部数据(非内部构造器里面的)
           })
  • 相关阅读:
    (DP)codeforces
    (树状数组)POJ
    (树状数组)POJ
    (二维树状数组)POJ
    (模拟)HDU
    (暴力+深搜)POJ
    (判连通+暴力)UVA
    (深搜)UVA
    (暴力+各种算法)hihoCoder
    (尺取法)HDU
  • 原文地址:https://www.cnblogs.com/Model-Zachary/p/6940969.html
Copyright © 2011-2022 走看看