发表于: 2017-01-12 23:42:21
1 1240
今天完成的事情:
1.终于把搜索功能做出来了,查找了好多资料,好累,还是谷歌好用···
2.搜索还是沿用昨天的方法,还是先一次性获取数据,然后再本地做的分页
查找的教程发现了更好的实现方法!
监控页面输入的搜索条件,直接对获取到的后台数据直接进行过滤,生成新的数组。
$scope.$watchCollection('search',function(newValue) {
$scope.filteredList = $filter('filter')($scope.names, newValue);
});
});
HTML页面中,直接循环过滤后的数组,并且设置limitTo过滤器,限制每页显示的数据。
<tr ng-repeat="x in filteredList | limitTo : maxPerPage : (currentPage - 1) * maxPerPage">
<!--获取数组下标生成序号-->
<td>{{$index + 1}}</td>
<td> {{x.skillName}}</td>
明天计划的事情:
1.研究如何通过点击按钮来触发搜索,而不是实时搜索。
2.研究通过后台来获取分页数据和搜索数据。
遇到的问题:
1.由于js代码用的是$watchCollection,实时监控反应搜索数据的,想了解通过点击button才触发的方法。
收获:
主要是filter的收获。
1.filter过滤后不会改变原数组,但是会生成过滤后的新数组。
2.ilter 过滤器的第一个参数可以是字符串、对象或是一个用来从数组中选择元素的函数。
- 当第一个参数是字符串时,返回所有包含这个字符串的元素。在该参数前加
!
将返回不包含该字符串的元素。 - 当第一个参数是 对象 时,AngularJS 会将待过滤对象的属性同这个对象中的同名属性进行比较,如果属性值是字符串就会判断是否包含该字符串。如果我们希望对全部属性都进行对比,可以将
$
当作键名。 - 当第一个参数是 函数 时,AngularJS 会对每个元素都执行这个函数,返回非假值的元素会出现在新的数组中并返回。
filter 过滤器的第二个参数是可选的,用来指定预期值同实际值进行比较的方式。该参数可以是以下三种情况之一:
- true: 用 angular.equals(expected, actual) 对两个值进行严格比较。
- false: 进行区分大小写的子字符串比较。
- 函数: 运行这个函数,如果返回真值就接受这个元素。
3. 想循环出序号,可以直接这样写 <td>{{$index + 1}}</td>,$index为当前循环的下标。
4.小课堂收获:可以通过F12调试的network部分来获取每次页面和服务器交互的时候,获取数据的顺序,时间,还有数据的详细内容。
评论