• 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 原型上

  • 相关阅读:
    如何使用固态硬盘+硬盘盒子+U盘创造移动双系统
    【Java成王之路】EE初阶第二十四篇: Servlet
    使用R语言自带数据“USArrests”,利用K-means进行聚类分析。建议按照如下步骤进行
    【LeetCode:2520. 统计能整除数字的位数 | 模拟 | HashMap】
    【MYSQL】表的综合查询
    Java Static关键字 单例设计模式
    View的绘制流程
    Node.js学习
    stm32 st7735驱动 详解
    Selenium-元素操作、浏览器操作方法
  • 原文地址:https://blog.csdn.net/AdminGuan/article/details/133749445