本文实例为大家分享了vue实现商城上货组件的具体代码,供大家参考,具体内容如下
<强> 0,结果放前面强>
点击查看效果
带脚手架的源码
加个明星后,叉下来。
然后在控制台,先输入npm安装安装依赖,再输入npm运行dev运行查看效果
<强> 1,先列需求强>
一切开发都是基于需求做的,所以需求先行,根据需求设计功能。
需求如下:
-
<李>上货商品有多个属性类别;(例如:颜色,尺寸,型号)李>
<李>每个类别有多个子属性;(例如:白色,绿色,金色)李>
<李>每个商品必然具备每个类别的其中一个子属性;李>
<李>除此之外还有额外属性,如【库存】,【描述】,【价格】等,每个都有,李>
<李>要求属性类别可以无限添加;李>
<李>要求每个属性类别下面的子属性可以无限添加;李>
<李>最后输出所有组合,以及他们每个组合的额外属性;李>
例如:
-
<李>颜色(白色,金色),尺寸(41、42);李>
<李>那么一共有四种组合:(白色,41),(白色,42),(金色,41),(金色,42);李>
<李>然后给每个组合加上价格,数量等属性,最后用JSON格式输出。
李>
例如输出以下结果:
( { 颜“色”:“白色”, “尺寸:“10”, “价格”:“0”, “数”:' 1 ' }, { 颜“色”:“白色”, “尺寸:“20”, “价格”:“0”, “数”:' 1 ' }, { 颜“色”:“绿色”, “尺寸:“10”, “价格”:“0”, “数”:' 1 ' }, { 颜“色”:“绿色”, “尺寸:“20”, “价格”:“0”, “数”:' 1 ' } ] >之前<强> 2,思路强>
由于无限可扩展的特性,因此模块分拆为两部分:
负责支持无限添加功能(包括类别和类别的属性),
根据已添加的类别和属性,组合出列表,并将列表展示或输出。
<强> 3代码如下强>
由于功能类似,因此没有写删除,修改功能,但思路跟添加是一致的。
点击查看效果
带脚手架的源码
加个明星后,叉下来。
然后在控制台,先输入npm安装安装依赖,再输入npm运行dev运行查看效果
详细请参考注释:
/* * *由王冬比; & lt;/td> & lt; td> & lt;输入类型=v模型“文本”=皏al”(“计数”)在 & lt;/td> & lt;/tr> & lt;/table> & lt;/div> & lt;/div> & lt;/template> & lt; scoped>风格; .category { 边界:1 px固体# 333; } .property { 浮:左; 边界:1 px固体# 333; 显示:inline-block; } 表{ border-collapse:崩溃; } th, td { 边界:1 px固体# 000; }/*——清除浮动——*/.clearfloat { 宽度:0; 明确:; 溢出:隐藏; 可见性:隐藏; } & lt;/style> & lt; script> 出口默认{ 数据(){ 返回{//要添加的新类别的名字 类别:”,//类别列表 categoryList:( {//类别名 名称:“颜色”,//类别属性列表 propertyList:['白色”、“绿”色) }, { 名称:“尺寸”, propertyList:(“10”、“20”) }, { 名称:“类型”, propertyList:['衣服”、“裤子”) } ] } }, 计算:{//输出列表 showList () { 让arr=[] 这一点。沃特森(加勒比海盗,{},0,this.categoryList.length) 返回加勒比海盗 } }, 方法:{//添加一个新的类别 addCategory () {//创建新类别 让obj={ 名称:this.category, propertyList: [], newPropertyName:“ }//添加到类别列表中 this.categoryList.push (obj) 这一点。类别=" },//向类别添加属性 addToPropertyList(类别){//在该类别的属性里列表里添加新的属性 category.propertyList.push (category.newPropertyName) 类别。newPropertyName=" },//递归 getList () { console.log (this.showList) 返回this.showList },//将数据组合成列的表,利用递归的特性 沃特森(arr obj, currentIndex最大长度){ 如果(currentIndex祝辞=最大长度){ 返回 } this.categoryList currentIndex .propertyList。forEach(项=比;{//在组合到最后一个之前,不停的往模板对象上添加属性 obj [this.categoryList [currentIndex] . name]=项目 如果(currentIndex===最大长度- 1){//组合到最后一个后,创建一个新的对象,然后放置入列表中 让结果=对象。obj分配({}) 结果。价格=' 0 ' 结果。数=' 1 ' arr.push(结果) 其他}{ 这一点。沃特森(arr obj, currentIndex + 1,最大长度) } }) } } } & lt;/script>vue实现商城上货组件简易版