• uni-app 在已有的数据对象中动态添加更多的数据对象


    原数据对象

    1. flowData: {
    2. list: [], // 数据值
    3. column: 2, // 瀑布列数
    4. columnSpace: 2 // 瀑布列宽间距
    5. }

    动态添加后的数据对象

    1. flowData: {
    2. list: [], // 数据值
    3. column: 2, // 瀑布列数
    4. columnSpace: 2, // 瀑布列宽间距
    5. column_1: [],
    6. column_2: []
    7. }

    动态添加更多的数据对象的方法

    1. created() {
    2. /* 初始化每一列的数据 */
    3. for (let i = 1; i <= this.flowData.column; i++) {
    4. this.$set(this.flowData, `column_${i}`, []);
    5. }
    6. },

    使用 this.$set 来动态添加一个名为 `column_${i}` 的属性,它被初始化为空数组或空对象或其他的值。可以根据需要重复此过程以添加更多的列属性

    1. this.$set(target, key, value);
    2. // target:要更改的数据源(可以是对象或者数组)
    3. // key:要更改的具体数据
    4. // value:重新赋的值

    官方解释:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hello,ningzaichun')

    简单来说:当你给对象加了一个属性,在控制台能打印出来,但是却没有更新到视图上时,这个时候就需要用到 this.$set() 这个方法

    Vue.set() 与 this.$set() 的区别

    Vue.set():将 set 函数绑定在 vue 构造函数中,设置实例创建之后添加的新的响应式属性,且触发视图更新,但是不允许添加根级响应式属性,只可以向嵌套对象添加响应式属性

    this.$set():将 set 函数绑定在 vue 原型上,只能设置实例创建后存在的数据(数据已经在 data 中)

    两者都是实现向实例对象中添加响应式属性,触发视图更新,两者原理和用法基本相同,都是使用 set 函数

    Vue.set() 是将 set 函数绑定在 Vue 构造函数上,this.$set() 是将 set 函数绑定在 Vue 原型上

  • 相关阅读:
    Educational Codeforces Round 155 (Rated for Div. 2)(A-D)
    华为认证云计算前景如何
    基础爬虫篇
    SSM应用程序启动流程
    C/C++每日一练:实现选择排序
    【访谈】Eotalk Vol.01:Eoapi,我们希望以开源的方式构建 API 生态系统
    pico+unity3d运行测试方法
    Go :测试函数签名(附完整源码)
    带权并查集(poj-1182 食物链)
    Unity类银河恶魔城学习记录13-1 p142 Save system源代码
  • 原文地址:https://blog.csdn.net/AdminGuan/article/details/133749445