今天完成的事情
1.angular任务 登陆/请求数据实现步骤笔记完善
2.angular任务 自定义管道实现步骤笔记完善
3.angular任务 数据分页实现步骤笔记完善
今天遇到的问题
1.angular查询数据定义的方法,之前定义如下
//以下时进行搜索的判断,防止搜索时某个值为undefined报错
this.dataObj.type == undefined ? '' : this.dataObj.type;
this.dataObj.status == undefined ? '' : this.dataObj.status;
//不知道什么缘故,原本通过
let start = this.startDate ? new Date(this.startDate).getTime() : '';这里是将时间的格式进行转换为时间戳格式
let end = this.endDate ? new Date(this.endDate).getTime() + 86399999 : ''; // + 86399999后可以搜索同一天
// 以下进行url传值,将搜索的条件传递到url中,页面初始化的时候获取url请求数据
this.rou.navigate(['/page/article'], {
queryParams: this.dataObj
})
但是现在获取到的时间是到搜索时间当天凌晨+实时时间,而之前只是获取到搜索时间当天凌晨,现在的数据不知道怎么获取到了实时时间,导致搜索功能失效,后来通过大佬的教导,定义了一个函数来解决这个问题,函数如下:
function transform(dt) {
return new Date((dt).getFullYear() + '-' + ((dt).getMonth() + 1) + '-' + (dt).getDate()).valueOf();
}
方法修改如下:
this.dataObj.startAt = this.dataObj.startAt ? transform(this.dataObj.startAt) : '';
this.dataObj.endAt = this.dataObj.endAt ? transform(this.dataObj.endAt) + 86399999 : ''; //能搜索同一天的数据(1天是86400000ms)
//这里是获取到搜索日期当天凌晨的时间,并转换为时间戳格式(计算1970/1/1到当前搜索时间凌晨的毫秒)
function transform(dt) {
return new Date((dt).getFullYear() + '-' + ((dt).getMonth() + 1) + '-' + (dt).getDate()).valueOf();
}
// 以下进行url传值,将搜索的条件传递到url中,页面初始化的时候获取url请求数据
this.rou.navigate(['/page/article'], {
queryParams: this.dataObj
})
开始使用是没有问题的,但是当我时间搜索第二次时,就会报错,大佬又告诉了我原因以及解决办法,毕竟我确实找不出来问题所在
原来问题是使用transform函数将日期格式转换成时间戳,然后再次搜索时间,它又会取转换原本就已经转换成功的日期导致报错,而解决办法就是通过if判断,当它是日期格式时就进行转换,不是就不转换,if判断语句如下:
function transform(dt) {
if (typeof dt !== 'number') {
return new Date((dt).getFullYear() + '-' + ((dt).getMonth() + 1) + '-' + (dt).getDate()).valueOf();
} else {
return dt
}
}
同时大佬还告诉我以下两行代码格式是错的,没有生效,而我删除后也没报错,我记得之前必须要的
this.dataObj.type == undefined ? '' : this.dataObj.type;
this.dataObj.status == undefined ? '' : this.dataObj.status;
今天的收获
1.今天进行笔记整理的同时,也对代码进行了优化重构,发现自己的代码还是又很多问题的,例如有三个接口地址是一模一样的,我却分别定义了三次
2.然后就是我的代码复用性太低,之前定义了一堆的变量,每次使用时还得定义一个对象进行获取,后来直接定义一个对象,将变量换成key值,代码的复用性大大地得到了提高
明天的计划
1.完成新增数据/编辑数据/删除数据 笔记的整理
2.新建路由守卫/登陆验证 笔记
评论