Vue.set全局操作

Posted 千と千寻の

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++;
                }
            }
       })
在外部改变数据的三种方法   *这些个button按钮都是写在外部不在new  vue({})作用域里面
1、用Vue.set改变
 function add(){
       Vue.set(outData,‘count‘,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
            }  //引入外部数据(非内部构造器里面的)
       })

 

以上是关于Vue.set全局操作的主要内容,如果未能解决你的问题,请参考以下文章

Vue中的set方法,改变对象和数组的内容

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段——git命令操作一个完整流程

vue中使用过的全局API

vue全局API