美文网首页
Vue.set全局操作及改变数据的三种方法

Vue.set全局操作及改变数据的三种方法

作者: 新世界的冒险 | 来源:发表于2018-07-16 16:58 被阅读0次

Vue.set

Vue.set 的作用就是在构造器外部操作构造器内部的数据、属性或者方法。比如在vue构造器内部定义了一个count为1的数据,我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue.set。

<!DOCTYPE html>
<html>
<head>
    <title>Vue.set</title>
</head>
<body>
    <div id="app">
        <p>{{count}}--{{firstName}}</p>
    </div>
    <button onclick="addset()">Vue set</button>
    <button onclick="addApp()">addApp</button>
    <button onclick="outAdd()">outAdd</button>
    <script type="text/javascript" src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
    <script type="text/javascript">
        var outData={
            count:1,
            firstName:'xia'
        }
        var app=new Vue({
            el:'#app',
            data:outData,
        })
        //在外部改变数据的三种方法
        //用Vue.set改变
        function addset(){
            // Vue.set(outData,'count',4)
        }
        //用Vue对象的方法添加
        function addApp(){
            app.count++;
        }
        //直接操作外部数据
        function outAdd(){
            outData.count+=2;
        }
    </script>
</body>
</html>

为什么要有Vue.set的存在?

由于Javascript的限制,Vue不能自动检测以下变动的数组。
*当你利用索引直接设置一个项时,vue不会为我们自动更新。
*当你修改数组的长度时,vue不会为我们自动更新。

<!DOCTYPE html>
<html>
<head>
    <title>Vue.set</title>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for='item in arrs'>{{item}}</li>
        </ul>
    </div>
    <button onclick="add()">改变值</button>
    <script type="text/javascript" src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
    <script type="text/javascript">
        function add(){
            console.log('已经执行');
            //无法改变数组中的值
            // outData.arrs[1]='bbb2';
            Vue.set(app.arrs,1,'ddd');    //此时使用Vue.set设置,vue才会自动更新
        }
        var outData={
            arrs:['aaa','bbb','ccc']
        }
        var app=new Vue({
            el:'#app',
            data:outData,
        })
    
    </script>
</body>
</html>

相关文章

网友评论

      本文标题:Vue.set全局操作及改变数据的三种方法

      本文链接:https://www.haomeiwen.com/subject/nzpbpftx.html