zoukankan      html  css  js  c++  java
  • vue $set的使用

     

    在我们使用vue进行开发的过程中,可能会遇到一种情况:当生成vue实例后,当再次给数据赋值时,有时候并不会自动更新到视图上去;

    当我们去看vue文档的时候,会发现有这么一句话:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。如下代码:

    复制代码
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>vue $set</title>
    <script src="https://static.runoob.com/assets/vue/1.0.11/vue.min.js"></script>
    </head>
    <body>
    <div id="app">
      姓名:{{ name }}<br>
        年龄:{{age}}<br>
        性别:{{sex}}<br>
        说明:{{info.content}}
    </div>
    <!-- JavaScript 代码需要放在尾部(指定的HTML元素之后) -->
    <script>
    var data = {
        name: "简书",
        age: '3',
        info: {
            content: 'my name is test'
        }
    }    
    var key = 'content';
    var vm = new Vue({
        el:'#app',
        data: data,
        ready: function(){
            //Vue.set(data,'sex', '男')
            //this.$set('info.'+key, 'what is this?');
        }
    });
    data.sex = '男';
    </script>
    </body>
    </html>
    复制代码

    运行结果:

    姓名:简书
    年龄:3
    性别:
    说明:my name is test

    为什么会这样呢?当去查对应文档时,你会发现响应系统 ,把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项,Vue 将遍历它的属性,用 Object.defineProperty 将它们转为 getter/setter,如上示例,将data在控制台打印出来会发现:

    在age及name都有get和set方法,但是在sex里面并没有这两个方法,因此,设置了sex值后vue并不会自动更新视图;

    解决方法:

    复制代码
    <script>
    var data = {
        name: "简书",
        age: '3',
        info: {
            content: 'my name is test'
        }
    }    
    var key = 'content';
    new Vue({
        el:'#app',
        data: data,
        ready: function(){
            Vue.set(data,'sex', '男');
            this.$set('info.'+key, 'what is this?');
        }
    });
    </script>
    复制代码

    1、通过Vue.set方法设置data属性,如上:

    Vue.set(data,'sex', '男')

    2、您还可以使用 vm.$set实例方法,这也是全局 Vue.set方法的别名:

    var key = 'content'; //这种主要用于当对象中某个属性值动态生成时处理方式
    this.$set('info.'+key, 'what is this?');
     或
    this.$set('info.content', 'what is this?');
  • 相关阅读:
    Android AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/FineDay/p/8640960.html
Copyright © 2011-2022 走看看