AngularJS学习记录-过滤器的应用
来源:互联网 发布:手机红外夜视仪软件 编辑:程序博客网 时间:2024/05/21 17:56
AngularJS学习记录-过滤器的应用
表头排序
表头排序是指在使用列表方式显示数据时,用户如果点击列表中某列的表头元素,那么,列表中的全部数据将会自动按该列的属性值自动排序,默认为升序排列,再次点击该列表表头元素时,则又变为降序。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <script src="../js/angular.min.js"></script> <style> body{ font-size:12px; } ul{ list-style-type: none; width: 408px; margin:0; padding:0; } ul li{ float: left; padding:5px 0; } ul .bold{ font-weight: bold; cursor:pointer; } ul li span{ width: 52px; float:left; padding:0 10px; } ul .focus{ background-color:#cccccc; } </style></head><body ng-app="app" ng-controller="myCtr"> <div> <ul> <li ng-class="{{bold}}"> <span>序号</span> <span ng-click="title='name';desc=!desc">姓名</span> <span ng-click="title='sex';desc=!desc">性别</span> <span ng-click="title='age';desc=!desc">年龄</span> <span ng-click="title='score';desc=!desc">分数</span> </li> <li ng-repeat="stu in data | orderBy : title : desc"> <span>{{$index+1}}</span> <span>{{stu.name}}</span> <span>{{stu.sex}}</span> <span>{{stu.age}}</span> <span>{{stu.score}}</span> </li> </ul> </div></body><script> var app = angular.module('app',[]); app.controller('myCtr',['$scope',function($scope){ $scope.bold = 'bold'; $scope.title = 'name'; $scope.desc = 0; $scope.data = [ {name : "小明",sex : "男",age : 24,score : 88}, {name : "张东",sex : "男",age : 21,score : 90}, {name : "小花",sex : "女",age : 25,score : 95}, {name : "张蕾",sex : "女",age : 19,score : 86} ]; }]);</script></body></html>
源码分析:
首先,向页面控制器代码中添加’title’,’desc’两个属性,分别用与绑定排序时的属性名称和排序方向,并赋予初始值’name’和0,表示数据初始化时按’姓名’属性的升序排列
$scope.title = 'name'; $scope.desc = 0;
然后,页面的视图模板中,当通过ng-repeat指令复制并显示数据时,调用可’orderBy’过滤器,并带有两个参数,第一个冒号后面的参数指定排序的属性名,第二个冒号后的参数指定排序的方向,该参数默认或缺省时为升序*,1为降序,0为升序*。最后在各个表头元素的点击(ng-click)事件中,分别对’title’和’desc’属性值进行重置,由于这两个属性与’orderBy’已经绑定,所以改变这两个值的同时,会改变列表的排序,最终实现表头排序功能。
总结:
- 在例子中可以看到(ng-click)里可以直接改变数值,而不需要声明一个function去调用。
< span ng-click="title='score';desc=!desc">分数</ span >
中可以发现,desc=!desc,其实等同于desc = desc == 1 ? 0 : 1。
字符查找
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ng-repeat</title> <script src="../js/angular.min.js"></script> <style> body{ font-size:12px; } ul{ list-style-type: none; width: 408px; margin:0; padding:0; } ul li{ float: left; padding:5px 0; } ul .bold{ font-weight: bold; cursor:pointer; } ul li span{ width: 52px; float:left; padding:0 10px; } ul .focus{ background-color:#cccccc; } </style></head><body ng-app="app" ng-controller="myCtr"> <div> <input type="text" id="tetkey" ng-model="key" placeholder="请输入姓名关键字"> </div> <div> <ul> <li ng-class="{{bold}}"> <span>序号</span> <span ng-click="title='name';desc=!desc">姓名</span> <span ng-click="title='sex';desc=!desc">性别</span> <span ng-click="title='age';desc=!desc">年龄</span> <span ng-click="title='score';desc=!desc">分数</span> </li> <li ng-repeat="stu in data | filter : {name:key}"> <span>{{$index+1}}</span> <span>{{stu.name}}</span> <span>{{stu.sex}}</span> <span>{{stu.age}}</span> <span>{{stu.score}}</span> </li> </ul> </div></body><script> var app = angular.module('app',[]); app.controller('myCtr',['$scope',function($scope){ $scope.bold = 'bold'; $scope.key = ''; $scope.data = [ {name : "小明",sex : "男",age : 24,score : 88}, {name : "张东",sex : "男",age : 21,score : 90}, {name : "小花",sex : "女",age : 25,score : 95}, {name : "张蕾",sex : "女",age : 19,score : 86} ]; }]);</script></body></html>
源码分析:
首先,在页面的控制器代码中添加一个名为’key’的属性,用于保存用户在文本框的输入的字符内容,该属性的初始值为空。
然后,在通过’ng-repeat’指令显示数据时,调用Angualr中的’filter’过滤器,并添加一个对象性字符参数,制定在数据对象的’name’属性中查找’key’值,即在”姓名”属性中查找文本框输入的内容,如果找到就显示,如果没有找到则不显示。
最后,在页面视图模板中,通过”ng-model”指令双向数据绑定控制器中的”key”的值将自动同步更新。
0 0
- AngularJS学习记录-过滤器的应用
- AngularJS学习记录-过滤器(自定义过滤器)
- angularjs过滤器的学习
- AngularJS学习记录-过滤器(基本使用)
- AngularJS学习记录-过滤器(排序方式过滤)
- AngularJS学习记录-过滤器(匹配方式过滤)
- angularJS的学习记录
- angularjs内置过滤器的使用学习
- angularjs学习 过滤器(filter)
- AngularJS 学习 之 过滤器
- angularJS的过滤器详解
- angularjs的过滤器
- AngularJS 霸道的过滤器
- 常用的AngularJS过滤器
- angularJS的过滤器
- AngularJs 常用的过滤器
- AngularJs的过滤器
- AngularJS的过滤器总结
- POJ2186
- c语言基础-变量、基础数据类型、关系运算符、顺序/条件/循环
- XMPP - 实现即时通讯相关库
- 快速诊断Linux性能
- 《疯狂java讲义》第4章思考
- AngularJS学习记录-过滤器的应用
- CentOS---网络配置详解
- HDU 2015百度之星资格赛—大搬家
- Bootstrap中,模态框嵌套模态框时,关闭第二个模态框时,导致第一个模态框的滚动条消失
- JAVA基础之异常处理
- 大话设计模式-命令模式
- 即时通讯协议 MQTT
- 让Grub 2来拯救你的 bootloader
- Android控件架构与自定义控件详解(一)——Android控件架构与View的绘制原理