avue实现用户本地保存自定义配置字段属性及注意事项

news2024/10/7 16:25:46

avue实现用户本地保存自定义配置字段属性及注意事项

先看一段基于vue-nuxt2的page代码:
代码文件AvueSaveOption.vue

<template>
  <div>
    <p>用户保存自定义表格项</p>
    <avue-crud
      ref="crud"
      :defaults.sync="defaults"
      :option="option"
      :data="data"
      :key="reload"
    >
      <template slot="menuLeft" slot-scope="{ size }">
        <el-button @click="saveOption" type="primary" :size="size">保存配置</el-button>
        <el-button @click="resetOption" type="danger" :size="size">还原配置</el-button>
      </template>
    </avue-crud>
  </div>
</template>
<script>
const key = "avue-option";
export default {
  data() {
    return {
      defaults: {},
      reload: Math.random(),
      data: [
        {
          text1: "内容1-1",
          text2: "内容2-1",
          text3: "110000",
        },
        {
          text1: "内容1-2",
          text2: "内容2-2",
          text3: "120000",
        },
        {
          text1: "内容1-3",
          text2: "内容2-3",
        },
        {
          text1: "内容1-4",
          text2: "内容2-4",
        },
        {
          text1: "内容1-5",
          text2: "内容2-5",
        },
      ],
      option: {
        sortable: true,
        addBtn: false,
        menu: false,
        border: true,
        align: "center",
        column: [
          {
            label: "列内容1",
            prop: "text1",
          },
          {
            label: "列内容2",
            prop: "text2",
          },
          {
            label: "列内容3",
            prop: "text3",
            type: "select",
            props: {
              label: "name",
              value: "code",
            },
            dicUrl: "https://cli.avuejs.com/api/area/getProvince",
          },
        ],
      },
    };
  },
  mounted() {
    this.loadLocalOption();
  },
  methods: {
    loadLocalOption() {
      this.$nextTick(() => {
        let defaults = localStorage.getItem(key);
        if (defaults) {
          this.defaults = JSON.parse(defaults);
        }
        this.$refs.crud.refreshTable(); //刷新表格,使表头同步
        //解决列表统计行不见的问题
        // if (typeof this.$refs.crud != "undefined") {
        //   this.$refs.crud.doLayout();
        // }
      });
    },
    saveOption() {
      localStorage.setItem(key, JSON.stringify(this.defaults));
      this.$message.success("配置保存成功");
      //   console.log(JSON.stringify(this.defaults));
    },
    resetOption() {
      localStorage.removeItem(key);
      this.reload = Math.random();//初始化
      this.$message.success("还原配置成功");
    },
  },
};
</script>
<style scoped lang="scss">
.el-dropdown-link {
  cursor: pointer;
  color: #409eff;
  font-size: 12px;
}
.el-icon-arrow-down {
  font-size: 12px;
}
.demonstration {
  display: block;
  color: #8492a6;
  font-size: 12px;
  margin-bottom: 20px;
}
.el-dropdown-menu__item {
  line-height: 1.6;
  font-size: 13px;
}
</style>

关键点分析

  1. :defaults.sync=“defaults”
  2. :option=“option”
  3. :data=“data”
  4. :key=“reload”

1. :defaults.sync=“defaults”

  • 这是改变option.column属性的关键,通过设置defaults对象,对象中的项对应着option.column对象或数组
  • 如上代码 this.defaults.text1 = this.option.column.text1

2. :option=“option”avue属性配置对象

3. :data=“data” 列表数据

4. :key=“reload” crud列表key

通过改变key变量reload来初始化列表数据
如:this.reload = Math.random();//初始化

在这里插入图片描述

图1

实现原理分析

  • 当用户点击属性配置按钮时(见图1),defaults对象会跟着改变
  • 保存配置时按唯一名称(如上代码中的常量key = “avue-option”)把defaults保存在浏览器本地存储中
  • 还原时删除本地存储中该唯一名称的值即可
  • 加载时,通过该唯一名称查找本地存储,有值后赋给defaults对象
  • 通过this.$refs.crud.refreshTable()刷新表格,使表头同步

注意事项

  • 当页面中有异步请求改变option.column属性时,一定要在请求成功后调用loadLocalOption,否则再点开属性配置时,对应的设置项没有同步显示出来

option是否可以使用computed计算属性?

option使用vue data属性或vue computed计算属性均可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/947044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云服务器前后端分离项目打包上传及nginx配置

目录 1、Spring Boot项目打包 2、后端上传到云服务器 3、前端打包 1&#xff09;前端请求路径修改 2&#xff09;打包上传 4、下载nginx 1&#xff09;添加源 2&#xff09;安装Nginx 3&#xff09;查看nginx安装目录和版本 4&#xff09;启动 重启nginx命令 5&#…

接口测试与功能测试的区别~

今天为大家分享的是我们在日常测试工作中, 一定会接触并且目前在企业中是主要测试内容的 功能测试与接口测试 一.功能测试与接口测试的基本概念。 1.1 什么是功能测试呢? 功能测试: 是黑盒测试的一方面, 检查实际软件的功能是否符合用户的需求 功能测试测试的内容包括以下…

工程制造领域:企业IT架构

一、500强IT部门的组织规划架构图 1.1 IT服务保证梯队与指导思想 二、工程制造领域&#xff0c;整体业务规划架构图 三、工程制造领域&#xff0c;数据化项目规划架构图 四、工程制造领域&#xff0c;IT应用系统集成架构图

15. 实现业务功能--帖子操作

1. 集成编译器 editor.md 支持 MarkDown 语法编辑&#xff0c;在需要用户输⼊内容的页面按以下代码嵌入编辑器 1.1 编写 HTML <!-- 引⼊编辑器的CSS --> <link rel"stylesheet" href"./dist/editor.md/css/editormd.min.css"> <!-- 引⼊编…

学习pytorch6 torchvision中的数据集使用

torchvision中的数据集使用 1. torchvision中的数据集使用官网文档注意点1 totensor实例化不要忘记加括号注意点2 download可以一直保持为True代码执行结果 2. DataLoader的使用 1. torchvision中的数据集使用 官网文档 注意左上角的版本 https://pytorch.org/vision/0.9/ 注…

行业趋势和新兴领域分析:分析当前网络安全行业的发展趋势,如IoT安全、AI安全、区块链安全等。

第一章&#xff1a;引言 随着数字化时代的迅速发展&#xff0c;网络安全已经成为各行各业不可忽视的重要领域。恶意攻击、数据泄露以及黑客入侵等威胁逐渐增多&#xff0c;推动着网络安全行业不断创新与进步。本文将深入探讨当前网络安全领域的发展趋势&#xff0c;聚焦于新兴…

肿瘤科医师狂喜,15分RNA修饰数据挖掘文章

Biomamba荐语 与这个系列的前面一些论文类似&#xff0c;这次给大家推荐的是一篇纯生物信息学数据挖掘的文章&#xff0c;换句话说&#xff0c;这又是一篇不需要支出科研经费&#xff08;白嫖&#xff09;的论文(当然&#xff0c;生信分析用的服务器还是得掏点费用的)。一般来…

springboot第37集:kafka,mqtt,Netty,nginx,CentOS,Webpack

image.png binzookeeper-server-start.shconfigzookeeper.properties.png image.png image.png 消费 image.png image.png image.png image.png image.png image.png image.png image.png image.png Netty的优点有很多&#xff1a; API使用简单&#xff0c;学习成本低。功能强大…

【操作系统】聊聊文件传输的零拷贝、PageCache、异步IO机制

在目前主流的系统中&#xff0c;其实大多数都是数据密集型系统&#xff0c;所以设计数据密集型应用一书非常经典&#xff0c;推荐一读。而大多数遇到的问题都是存储问题。CPU、内存 因为本身的读写速度比较快&#xff0c;所以磁盘就成为了一个性能瓶颈。 针对磁盘优化的技术层…

对class文件进行base64编码

使用以下代码 package org.springframework.cloud.gateway.sample;import org.springframework.util.Base64Utils;import java.io.*; import java.nio.charset.StandardCharsets;public class EncodeShell {public static void main(String[] args){byte[] data null;try {In…

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹&#xff0c;出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统&#xff0c;除了作为网络操作系统之外&#xff0c;还可以作为单…

6路液体水位检测芯片VK36W6D SOP16 抗电源干扰及手机干扰特性好

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK36W6D 封装形式&#xff1a;SOP16/QFN16L 详细资料&#xff1a;13.5/5.474/4.703 概述 VK36W6D具有6个触摸检测通道&#xff0c;可用来检测6个点的水位。该芯片具有较高的集成度&#xff0c;仅需极少的外部组件便…

vscode GDB 调试linux内核 head.S

遇到的问题 此前参考如下文章 https://zhuanlan.zhihu.com/p/510289859 已经完成了在ubuntu 虚拟机用vscode 调试linux 内核。但是美中不足的是&#xff0c;断点最早只能加在__primary_switched() 函数。无法停在更早的断点上&#xff0c;比如ENTRY(stext) 位置。参考《奔跑吧…

C语言_初识C语言指针

文章目录 前言一、指针 ... 一个内存单元多大比较合适&#xff1f;二、地址或者编号如何产生&#xff1f;三、指针变量的大小 前言 内存是电脑上特别重要的存储器&#xff0c;计算机中程序的运行都是在内存中进行的。 所以为了有效的使用内存&#xff0c;就把内存划分成一个个…

记1次前端性能优化之CPU使用率

碰到这样的一个问题&#xff0c;用户反馈页面的图表一直加载不出来&#xff0c;页面还卡死 打开链接页面&#xff0c;打开控制台 Network 看到有个请求一直pending&#xff0c;结合用户描述&#xff0c;页面一直loading,似乎验证了我的怀疑&#xff1a;后端迟迟没有相应。 但是…

【工作笔记-0038】mongodb mongorestore 命令行导入 bson.gz数据

1. 导出的集合文件格式如下&#xff08;也就是导出的表文件&#xff09;&#xff1a; 例如&#xff1a; D:\Files\xxxx集合名称.bson.gz 怎样导出&#xff0c;这里不做介绍&#xff0c;用 mongodb compass 或者 studio 3t 都可以 2. 下载命令行导入工具&#xff1a; 官方…

webpack(一)模块化

模块化演变过程 阶段一&#xff1a;基于文件的划分模块方式 概念&#xff1a;将每个功能和相关数据状态分别放在单独的文件里 约定每一个文件就是一个单独的模块&#xff0c;使用每个模块&#xff0c;直接调用这个模块的成员 缺点&#xff1a;所有的成员都可以在模块外被访问和…

Redis发布订阅

Redis发布订阅 Redis 发布订阅(pub/sub)是一种 消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图&#xff1a; 下图展示了频道 channel1 &#xff0c; 以及订阅这个频道的三个客户端 —…

时间范围选择时选中日期所使用的当日内具体时刻 如00:00:00= 23:59:59

<el-form-item label"审核时间&#xff1a;"><el-date-pickerv-model"auditTime"type"datetimerange"range-separator"至"value-format"yyyy-MM-dd HH:mm:ss"start-placeholder"开始日期"end-placeholde…

智慧园区方案:AI与视频融合技术如何助力园区监管智能化升级?

一、行业背景 随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;技术正在各个领域迅速应用和推广。其中&#xff0c;智慧园区是一个重要的应用场景&#xff0c;它通过AI技术的支持&#xff0c;实现了园区的智能化管理和高效运营。 1、园区管理智慧化升级需求…