自定义修改属性
1.首先根据选择的产品类目id进行查找从而得到相应的数据
ajaxRequest("/offer/searchv2", { ProductIds: batchModifyAttr.allCheckboxArray }, function (data) {}
将返回的数据赋值给batchModifyAttr.cusTitle数组,以及初始化修改前修改后的数组
2.将batchModifyAttr.cusTitle[0]数组(下标为1的)作为参数传到方法collective(batchModifyAttr.cusTitle[0]);
3.根据collective:function(el){
ajaxRequest("/alicate/attr", { categoryId: el.CategoryId, isNeedFront:true }, function (data) {}这个方法将产品的categoryId传入方法中, 从而拿到修改前的属性数据 和 要渲染的属性数组,如下:
el.previewAttr = getInitAttriButes(data, el.Attributes); //修改前属性数据 batchModifyAttr.attriButeArr = getAttriButesTree(deepClone(el.previewAttr)); //要渲染的属性数据
4.getAttriButesTree() 这个方法是将属性数据 构造成tree结构
5.getPreviewAttr(el) 获取修改前的属性结构
getPreviewAttr(el) {
var text=[];
var loop=function(el){
if(el.subtree.length>0){
for (var i = 0; i < el.subtree.length;i++){
loop(el.subtree[i]);
}
}
if (el.inputType == 2 || el.inputType == 4){
if (Array.isArray(el.value) && el.value.length > 0){
text.unshift(el.name + ":" + el.value.join(","))
}
} else if (el.value != ""){
text.unshift(el.name + ":" + el.value)
}else{
text.push("未设置");
}
}
loop(el);
return text.join(";");
}
a. 判断el.subtree.length是否大于0,如果大于0,循环el.subtree.然后调用方法loop(el.subtree)
b. 判断el.inputType是否等于2或者4,然后判断el.value是否是数组且是否为空,然后像头部unshit添加数据
text.unshift(el.name + ":" + el.value.join(",")) =>el.name是第一层属性.el.value是子属性有可能多条数组,所以用join(",")转化为字符串
c. 判断el.value是否为空,不为空就像头部添加属性
text.unshift(el.name + ":" + el.value) =>el.name是第一层属性.el.value是子属性
d.调用loop(el) 返回数据return text
6.cusModifyAttr()点击信息打开属性修改框进行修改属性值
a. 首先从当前选中的类目中拿到修改前的属性
b. 判断修改后数组是否大于0.如果 el.aftePpreviewAttr.length >0说明已经修改过,修改前数据就等于修改后的数组.即:el.previewAttr == el.aftePpreviewAttr;
c. 将修改后的数组传入修改属性框的方法中addAttributes.refreshVmModel({AttrVals": attrVals},function(data) )
d. 将返回的数据赋值给修改后数组 el.aftePpreviewAttr == data.AttrVals
e. 将修改后的属性构造成树性结构并赋值给属性数组el.attriButeArr=getAttriButesTree(deepClone(el.aftePpreviewAttr)); 如下:
cusModifyAttr:function(){
var el=batchModifyAttr.cusTitle[this.active]; //当前选中类目
var attrVals = el.previewAttr; //修改前
if(el.aftePpreviewAttr.length > 0){
attrVals = el.aftePpreviewAttr; //如果aftePpreviewAttr.length>0说明已经修改过 即:previewAttr==aftePpreviewAttr
}
addAttributes.refreshVmModel({ "AttrVals": attrVals }, function(data){
el.aftePpreviewAttr = data.AttrVals; //修改后返回的属性值
el.attriButeArr=getAttriButesTree(deepClone(el.aftePpreviewAttr)); //将修改后的属性构造成属性结构并赋值给属性数组
console.log('el.aftePpreviewAttr',el.aftePpreviewAttr);
console.log('el.attriButeArr', el.attriButeArr);
});
},