资讯专栏INFORMATION COLUMN

iview 使用总结

王陆宽 / 2960人阅读

摘要:开发后台系统问题总结项目参考了用了包裹页面进行缓存点击可切换不会重新渲染在特定页面比如详情页需要每次刷新的时候添加进行相关的刷新导致了另外一个问题最初跳转时用的传参刷新参数就没了特改为传参涉及到关闭点击等多个问题用存储数据并做了最大限

vue+iview 开发后台系统问题总结

项目参考了iview-admin

tags

用了keep-alive 包裹 router-view,页面进行缓存点击tag可切换,不会重新渲染

在特定页面比如详情页需要每次刷新的时候,添加watch $route 进行相关的刷新,导致了另外一个问题,最初跳转时用的 params传参,刷新参数就没了,特改为query传参.

涉及到关闭tag,点击tag,等多个问题,用vuex存储tags数据,并做了最大限制超过8个就splice(0,1)

menu

主要是openName 这个props问题,即展开的menu name,采取的在根组件watch $route 根据router 的相应name 改变openName

form

表单有相应的验证问题,在FormItem 添加相应的ref 然后在脚本里自定义验证规则

   const validatesuffix = (rule, value, callback) => {
      if (value == "") {
        callback(new Error("标识不能为空"));
      } else {
        let testReg = /^[a-zA-Z][a-zA-Z0-9]{1,5}$/;
        if (!testReg.test(value)) {
          callback(new Error("2~6位,只能输入英文数字(字母开头)"));
        } else {
          checkExit({
            suffix: { role: "10", suffix: value }
          }).then(res => {
            if (res.code == 0) {
              if (res.payload == true) {
                callback();
              } else {
                callback(new Error("标识不可用,请重新输入"));
              }
            }
          });
        }
      }
    };
table

项目用了很多table, iview 的table用render渲染列,不像element,模板比较简洁

      

表格里数据有点击操作,导致columns写很多

简单情况如下:

 render: (h, params) => {
            let arr = this.child;
            let count = 0;
            for (let item of arr) {
              count += item.betCount;
            }
            if (params.row.role == "1") {
              return h("span", count);
            } else {
              return h("span", params.row.betCount);
            }
          }

复杂情况:Poptip组件里再渲染table

render: (h, params) => {
            let column = [
              {
                title: "游戏",
                key: "name"
              },
              {
                title: "占成",
                key: "rate"
              }
            ];
            let data = [];
            let gameList = params.row.gameList;
            let len = gameList.length;
            for (let item of gameList) {
              let obj = {};
              obj.rate = item.rate + "%";
              obj.name = item.name;
              data.push(obj);
            }
            return h(
              "Poptip",
              {
                props: {
                  trigger: "hover"
                }
              },
              [
                h(
                  "span",
                  {
                    style: {
                      cursor: "pointer",
                      color: "#20a0ff"
                    }
                  },
                  len + "款游戏"
                ),
                h("Table", {
                  props: {
                    columns: column,
                    data: data,
                    border: true,
                    size: "small",
                    width: 250
                  },
                  slot: "content"
                })
              ]
            );
          }

事件处理:

return h(
                "Button",
                {
                  props: {
                    type: "text",
                    size: "small"
                  },
                  style: {
                    color: "#20a0ff"
                  },
                  on: {
                    click: () => {
                      let userId = params.row.userId;
                      let displayName = params.row.displayName;
                      let username = params.row.username;
                      let parent = params.row.parent;
                      this.$router.push({
                        path: "/dealerDetail",
                        query: {
                          userId,
                          displayName,
                          username,
                          parent
                        }
                      });
                    }
                  }
                },
                "查看"
              );

exportCsv()方法,导出csv文件,iview 并未对render函数做处理,导致导出的数据没有,只能写很多代码处理columns 列数据,以及data行数据,自定义导出,这个问题觉得该给iview团队提提,

问题2,给循环处理的table,导出数据

({{item.length > 0 && item[0].parentDisplayName ? item[0].parentDisplayName : ""}}) 下级列表

绑定的ref加上index,已获得当前表格,说到这个循环,想起另外一问题

 

({{item.childItem.length > 0 && item.childItem[0].parentDisplayName ? item.childItem[0].parentDisplayName : parentNameChild}}) 下级列表

给循环的table 绑定RadioGroup v-model绑定成item.isTest,on-change是传入item这样就能使每个循环出来的数据独立,当初就在想,在data里初始化的话,根本不知道有多少个循环出来的表格,一度认为这个无法实现

总结

总体来说iview比较简洁(相比element),风格和设计也很不错.因为是全局引入,iview比较大

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96746.html

相关文章

  • iview-admin webpack打包总结的几个问题

    摘要:小白,总结几条遇到的打包问题开发代理服务器与上线接口调用的差别开发时用做代理打包时要区分开生产环境跟开发环境即开发配置文件生产配置文件这样配置后接口调用方式变为而不是常见的这种形式,这样写的目的是为了部署后能请求的接口中不会带有导致请求地 webpack小白,总结几条遇到的打包问题1.开发代理服务器与上线接口调用的差别开发时用devServer做代理 showImg(https://s...

    KoreyLee 评论0 收藏0
  • iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

    摘要:在许多志愿者的帮助下,将文档全部翻译为英文,在开发者社区颇受欢迎。有了英文版后,更多的国外开发者也参与到讨论之中,相信接下来会有更多来自国外的。英文版的翻译离不开社区的贡献,在此特别感谢和三位热心志愿者。 showImg(https://segmentfault.com/img/bVRG13?w=2880&h=1800); 两年前,我开始接触 Vue.js 框架,当时就被它的轻量、组件...

    alexnevsky 评论0 收藏0
  • iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

    摘要:在许多志愿者的帮助下,将文档全部翻译为英文,在开发者社区颇受欢迎。有了英文版后,更多的国外开发者也参与到讨论之中,相信接下来会有更多来自国外的。英文版的翻译离不开社区的贡献,在此特别感谢和三位热心志愿者。 showImg(https://segmentfault.com/img/bVRG13?w=2880&h=1800); 两年前,我开始接触 Vue.js 框架,当时就被它的轻量、组件...

    Drinkey 评论0 收藏0
  • iView3.x Anchor(锚点)组件 导航锚点

    摘要:锚点组件导航锚点框架中新添了一个锚点组件,用这个组件去做页面的分类导航正好合适,但是苦于官方文档太过抽象研究了一整天,才勉强可以在项目中应用。 iView3.x Anchor(锚点)组件 导航锚点 iview 3.x框架中新添了一个Anchor(锚点组件),用这个组件去做页面的分类导航正好合适,但是苦于官方文档太过抽象研究了一整天,才勉强可以在项目中应用。下面是我研究后的一点总结...

    wuaiqiu 评论0 收藏0
  • 记一次使iview库的Radio可取消的过程

    摘要:概述库用的是是我们非常常用的组件。有一个特征是选中之后无法取消。现实中取消的需求是常见且可以理解的。所以看到这个需求之后第一尝试在组件之上搞一搞,这一搞就入坑了,现在就来理一理我的入坑之路吧。 概述 ui库用的是iview . radio、radioGroup是我们非常常用的组件。radio有一个特征是选中之后无法取消。现实中取消radio的需求是常见且可以理解的。所以看到这个需求之后...

    荆兆峰 评论0 收藏0

发表评论

0条评论

王陆宽

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<