Vueelementselect功能
思路
1、需要的数据结构data(){ return { options: { value:[ { value: "选项1", label: "黄金糕", }, { value: "选项2", label: "双皮奶", }, { value: "选项3", label: "蚵仔煎", }, { value: "选项4", label: "龙须面", }, { value: "选项5", label: "北京烤鸭", }, ], city:[ { value: "Chengdu", label: "成都" }, { value: "Shenzhen", label: "深圳" }, { value: "Guangzhou", label: "广州" }, { value: "Dalian", label: "大连" } ] }, DataList: { lineData: null, //选中行数据 //表结构循环的数据 columns: [ { type: "type", title: "名称"}, { type: "addport", title: "年龄"}, { type: "city", title: "城市"}, { type: "value", title: "爱好"}, ], data: [ {type:"张三",addport:"20",city:"Chengdu",value:"选项1",isflag:false}//例子 ],//把请求回来的list赋值到这 }, } }
2、将获取到的数据遍历,在每条数据里边添加一个id,写一个方法调用reloadData() { var addId = { _count: 1, get() { return +new Date() + "_" + this._count++; }, }; this.DataList.data.map((i) => { i.id = addId.get(); return i; }); },
3、点击编辑的时候,获取每行的数据row,复制一份存起来,将可编辑的标识设为truethis.DataList.lineData = JSON.parse(JSON.stringify(row)); row.isflag = true;
4、table代码 {{ scope.row[v.type] | capitalize(v.type)}} {{ scope.row[v.type] | capitalize(v.type)}} {{ scope.row[v.type]}} {{ scope.row.isflag ? "保存" : "修改" }}
5、这个代码{{ scope.row[v.type] | capitalize(v.type)}} ,需要用到过滤器filters: { capitalize: function (value,type) { let arrary let arrary2 = [ { value: "Chengdu", label: "成都" }, { value: "Shenzhen", label: "深圳" }, { value: "Guangzhou", label: "广州" }, { value: "Dalian", label: "大连" } ]; let arrary1 = [ { value: "选项1", label: "黄金糕", }, { value: "选项2", label: "双皮奶", }, { value: "选项3", label: "蚵仔煎", }, { value: "选项4", label: "龙须面", }, { value: "选项5", label: "北京烤鸭", }, ]; if(type=="city"){ arrary = arrary2 }else{ arrary = arrary1 } var valueName; arrary.forEach((v) => { if (v.value == value) valueName = v.label; }); return valueName; }, },
6、当需要保存数据的时候let data = JSON.parse(JSON.stringify(this.DataList.lineData)); for (let k in data) { console.log(row[k] ,k,data[k]) row[k] = data[k] } this.$message({ type: "success", message: "保存成功!", }); this.reloadData() //重新遍历数据 row.isflag = false;
7、优化部分for (let i of this.DataList.data) { if (i.isflag && i.id != row.id) { this.$message.warning("请先保存当前编辑内容"); return false; } }