①新增和删除扩展属性和电商三十七新增规格选项差不多。只不过不用保存到两张表中,只用保存到一张表中。
和之前的电商三十七新增规格选项代码差不多。
电商三十七的新增规格选项保存到数据库的tb_specification_option(规格选项表)表中,而不是保存到tb_specification(规格表)表中,即保存到第二张表中。
而新增扩展属性,是保存到同样一张表中。同样保存到tb_type_template表中。
②增加扩展属性行。先写前端代码。写前端的控制层(controller层)。写在typeTemplateController.js文件中。
哪里定义了$scope.entity呢?我们分析一下:在typeTemplateController.js文件中定义了:
$scope.findOne函数在哪里调用呢?
在文件type_template.html中调用:
然后是$event.target.parentNode.parentNode.children[1].innerText,这个值就是{{entity.id}}的值。
$scope.entity03= {id: $event.target.parentNode.parentNode.children[1].innerText}
将循环的entity(不是全局变量$scope.entity的值)的id的值,封装在全局变量$scope.entity03中,且$scope.entity03是一个对象,对象内有属性值id。这个id的值为:循环的entity(不是全局变量$scope.entity的值)的id的值。
然后是typeTemplateService.findOne($scope.entity03).success(
function(response){
$scope.entity = response;
}
);
typeTemplateService.findOne($scope.entity03)..............
在typeTemplateService.js文件中:
$http.post("../typeTemplate/findOne.do",entity09);
相当于:$http.post("../typeTemplate/findOne.do",$scope.entity03);
开始与后端代码交互。
第一步:开始与后端代码控制层(controller层)交互:与TypeTemplateController.java交互
$http.post("../typeTemplate/findOne.do",entity09);中的/typeTemplate与上面的@RequestMapping("/typeTemplate")相对应。
$http.post("../typeTemplate/findOne.do",entity09);中的/findOne与上面的@RequestMapping("/findOne")相对应。
最后findOne函数返回的是TbTypeTemplate.java类对应的对象。
typeTemplateService.findOne($scope.entity03).success(
function(response){
$scope.entity = response;
}
);
返回的TbTypeTemplate.java类对应的对象就是response的值。只不过是json形式的。
则$scope.entity=response的json格式是:{"id": , "name":" ", "specIds":" ", "brandIds":" ", "customAttributeItems":" "};因为数据库:
数据库id是bigint类型,则对应java是Long类型。
数据库name、spec_ids、brand_ids和custom_attribute_items是varchar类型,则对应java是String类型。而不是数组/集合(List)类型
如:entity的json格式是:{"id":37,"name":"电视","specIds":"[{"id":33,"text":"电视屏幕尺寸"}]","brandIds":"[{"id":16,"text":"TCL"},{"id":13,"text":"长虹"},{"id":14,"text":"海尔"},{"id":19,"text":"创维"},{"id":21,"text":"康佳"},{"id":18,"text":"夏普"},{"id":17,"text":"海信"},{"id":20,"text":"东芝"},{"id":15,"text":"飞利浦"},{"id":22,"text":"LG"}]", "customAttributeItems":"[{"text":"内存大小"},{"text":"颜色"}]"}
则在angularjs中得到数据:
entity.id、entity.name、entity.specIds、entity.brandIds、entity.customAttributeItems。不用entity."id"、entity."name"..............不用像json标准格式一样打双引号。而且在赋值的时候,如:entity.customAttributeItems=[ ],也不用打双引号。不用:entity.customAttributeItems="[ ]"。json标准格式是key和String类型的value都要打双引号。不是标准的json格式可以打单引号。angularjs取值和赋值的时候都不用打双引号,无论是key值,还是String类型的value值,都不用打双引号,直接点某某某即可。如:entity.brandIds=[ { },{ }........],而不用:entity."brandIds"="[{ },{ }.........]"。
③增加扩展属性行。在type_template.html文件中的新建按钮,执行实体$scope.entity.customAttributeItems的初始化操作。
只用初始化customAttributeItems这一个。$scope.entity用到哪一个,初始化哪一个。
④增加扩展属性行。在type_template.html文件中,修改“新增扩展属性”按钮,调用$scope.addTableRow方法。并且在扩展属性的表格中用ng-model绑定数据。
⑤删除删除扩展属性行。先写前端代码。写前端的控制层(controller层)。写在typeTemplateController.js文件中。