发表于: 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部分来获取每次页面和服务器交互的时候,获取数据的顺序,时间,还有数据的详细内容。


返回列表 返回列表
评论

    分享到