1. 后台持久层Spring Jpa(即hibernate), 前台angularJS(angularJS只接受json串), 在后台使用DTO层对象代替domain(entity)与前台交互时,
传递的DTO对象中也包含对象,被包含对象也一定是对应domain的DTO, 因为只有DTO可以序列化和反序列化,用作于表现层的传递对象。
如下:
public class VehicleAnnualAuditDTO { private Long id; private Boolean deleted; // 关联车辆 // 要包含一个其他对象, 类型必须是其对应的DTO类,属性名需要与对应的domain类中的属性名相同,这样自动转化工具比如(ObjectMapper或ModelMapper)能够识别并转化 private VehicleDTO vehicle; // 年审时间 private String annualDate; // 办理人姓名 private Staff agent; // 备注 private String remark; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Boolean getDeleted() { return deleted; } public void setDeleted(Boolean deleted) { this.deleted = deleted; } public VehicleDTO getVehicle() { return vehicle; } public void setVehicle(VehicleDTO vehicle) { this.vehicle = vehicle; } public String getAnnualDate() { return annualDate; } public void setAnnualDate(String annualDate) { this.annualDate = annualDate; } public Staff getAgent() { return agent; } public void setAgent(Staff agent) { this.agent = agent; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public VehicleAnnualAuditDTO() { super(); } }
2. 在编写初始化init函数或者其他函数时:切忌要认清该函数的任务, 不要把初始化变量全写在里面然后每次点击都调用,这样会导致初始化数据归置,应该只调用初始化函数一次:
例子:(血的教训啊)
//该函数的主要任务是初始化参数和数据 (*其实该函数取名就不太对,要配置参数就光参数,要刷新数据就刷新数据,怎么还先配置参数在刷新数据,全还在一起了,以后调用肯定出错) function initialize() { debugger; // 初始化参数 $scope.one = "hello"; $scope.filter = {}; // 过滤器 // 分页参数 $scope.pageSize = [2, 5, 10]; $scope.pageInfos = {}; // 初始化第一页 toPage(1, 2, null); } // 而我在前台调用的地方却是一个经常点击的事件, 该事件其实只需要获取数据 ,而我却调用了上面这个方法,导致每次调用参数都会归置 <uib-tabset active="1" justified="true"> <uib-tab index="0" heading="汽车" th:include="vehicle/info/templates::car" select="initialize()">汽车</uib-tab> //select是一个经常点击的事件,我调用的方法应该只包含数据的刷新而不包含参数 <uib-tab index="1" heading="工作车" th:include="vehicle/info/templates::workingCar" select="toWorkingCar()">工作车</uib-tab> <uib-tab index="2" heading="可用车辆" th:include="vehicle/info/templates::vehicleAvailable" select="toVehicleAvailable()">可用车辆</uib-tab> </uib-tabset>
正确的做法是:
$scope.toVehicleAvailable = function() { //在调用的方法中只处理数据的更新,在参数配置放在另一个函数中 initAvailableVehicle(); }; function initialGanttConfig() { // 专门预处理参数的方法,确保该方法只走一次而不是每次带年纪都走,那样参数每次都重新赋值岂不是权利乱套了全 // 初始化gantt图配置 $scope.headersFormats = { 'year': 'YYYY年', month: 'YYYY年-MM月', week: '第w周', day: 'DD', hour: 'HH:', minute: 'HH:mm', second: 'H:mm:ss', }; $scope.fromDate = dateService.getMonday();// gantt图开始日期:当前周的周一 $scope.toDate = dateService.getSunday();// gantt图截止日期:当前周的周末 // 监听日期变化 }; initialGanttConfig(); // 只调用一次