发表于: 2017-07-13 21:35:19

1 995


今天整理一下搜索功能的思路

1. 首先是url传参

url:"/home?type&status&startAt&endAt",

params只是发起请求,具体到将参数传给后台要使用url传参

固定写法“?”后面是参数,多个参数传递要使用&连接

2. 日期的传递

通过ng-model进行双向绑定之后,可以将表单页面中输入的值传递给后台,但是时间在输入的时候是一个object,后台的时间是一个时间戳,数据类型是number

所以,要将双向绑定后时间一栏的内容转化为时间戳传递给后台

$scope.parmas.startAt = Date.parse($scope.startAt);

Date.parse()就是将时间转化为时间戳的函数,通过等式赋值给param参数

这里会有一个问题

第一次发起请求的时候吗,时间框内没有值,所以无法进行赋值运算,会报错

if (isNaN($scope.parmas.startAt)) {
   $scope.parmas.startAt = ""
}

通过这一方法进行初始化

没有输入日期的时候,空值是一个NaN,所以通过isNaN()函数运算,返回的值是true,执行if函数内的内容,就是初始化,在这里只要$scope.parmas.startAt是一个空值即可,不能是空对象,因为空对象包含object

3. ui-sref

ui-sref="home({type:parmas.type,status:parmas.status,startAt:startAt,endAt:endAt})

ui-sref内部包含要跳转的页面和全部的键值对形式的参数,键是和后台约定的,值是通过双向绑定得到的值

如果想要清空搜索框,直接将值变为空

ui-sref="home({type: '',status: '',startAt: '',endAt: ''})"

4. 参数转换

if ($stateParams!=undefined) {
   //首先我们通过ui-sref跳转了页面并传递了参数,在目标页面用$stateParams接收,所以$stateParams包含了所有ui-sref中传递的参数以及参数里包含的值
 $scope.parmas=$stateParams;
   $scope.startAt=new Date( $scope.parmas.startAt);
   $scope.endAt=new Date( $scope.parmas.endAt);
   //将时间戳转换成时间
   $scope.aaa();
} else {
   $scope.aaa()
}
//如果第一次加载该页面,$stateParams不存在,所以直接执行else,即执行aaa()

最后将传递的参数体现在表单元素中双向绑定

接下来的计划是完成翻页功能并且准备小课堂


返回列表 返回列表
评论

    分享到