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全局操作的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程