AngularJS 过滤与排序详解及实例代码


Posted in Javascript onSeptember 14, 2016

前面了解了AngularJS的使用方法,这里就简单的写个小程序,实现查询过滤以及排序的功能。

本程序中可以了解到:

1 angularjs的过滤器

2 ng-repeat的使用方法

3 控制器的使用

4 数据的绑定

程序设计分析

首先,如果要是先查询过滤,就要使用到AngularJS中的 过滤器filter 了。

直接在表达式的后面使用管道命令符 | ,按照下面的写法就可以达到一个过滤的效果:

{{ persons | filter:query }}

通过使用filter实现过滤操作,query是查询过滤时输入的字符串。

类似地,使用orderBy就可以实现排序的功能:

{{ persons | filter:query | orderBy:order }}

上面的查询以及排序涉及到两个变量,query和order。在这里直接使用ng-model实现数据的绑定即可:

Search:<input ng-model="query">
      Sort by:<select ng-model="order">
        <option value="name">name</option>
        <option value="age">age</option>
      </select>

AngularJS是一门基于DOM的框架语言,因此不需要实现任何的监听器以及事件触发器,当query所在的输入框发生任何改变时,就会触发输入框与下面的表达式展现的双向刷新!

相比于其他的一些框架,是基于字符串通过DOM节点innerHTML添加到DOM中,AngularJS的实现方式加快了模型与视图的展现。并且减少了大量不必要的监听器啊触发器啊之类的代码的编写,真正实现了类似spring的效果~

数据的展现,可以通过ng-repeat实现。当网页解析到ng-repeat的时候,会为每一个数组中的元素都克隆一份标签,进行编译解析。

 

 <ul class="persons">
        <li ng-repeat="person in persons | filter:query | orderBy:order">
          {{person.name}}
          
          {{person.age}}
        </li>
      </ul>

剩下的工作就是需要在script中进行perons数组的初始化:   

<div ng-controller="ctl">
          ...
    </div>
    <script type="text/javascript">
      function ctl($scope){
        $scope.persons = [
          {"name":"xingoo","age":25},
          {"name":"zhangsan","age":18},
          {"name":"lisi","age":20},
          {"name":"wangwu","age":30}
        ];
        $scope.order = "age";
      }
    </script>

  代码以及结果

最后贴上全部的代码:

<!doctype html>
<html ng-app>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>

  </head>
  <body>
    <div ng-controller="ctl">
      Search:<input ng-model="query">
      Sort by:<select ng-model="order">
        <option value="name">name</option>
        <option value="age">age</option>
      </select>

      <ul class="persons">
        <li ng-repeat="person in persons | filter:query | orderBy:order">
          {{person.name}}
          
          {{person.age}}
        </li>
      </ul>
    </div>
    <script type="text/javascript">
      function ctl($scope){
        $scope.persons = [
          {"name":"xingoo","age":25},
          {"name":"zhangsan","age":18},
          {"name":"lisi","age":20},
          {"name":"wangwu","age":30}
        ];
        $scope.order = "age";
      }
    </script>
  </body>
</html>

使用结果:

在默认情况下,使用age进行排序:

AngularJS 过滤与排序详解及实例代码

通过选择则可以使用name排序

AngularJS 过滤与排序详解及实例代码

再输入字符的时候,会自动过查询过滤掉一些选项

AngularJS 过滤与排序详解及实例代码

以上就是对AngularJS 过滤与排序的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
使用documentElement正确取得当前可见区域的大小
Jul 25 Javascript
JavaScript动态改变div属性的实现方法
Jul 22 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
Aug 21 Javascript
微信小程序 navigation API实例详解
Oct 02 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
react-native中ListView组件点击跳转的方法示例
Sep 30 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
微信小程序制作表格的方法
Feb 14 Javascript
React中的Context应用场景分析
Jun 11 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 #Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 #Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 #Javascript
AngularJS equal比较对象实例详解
Sep 14 #Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 #Javascript
AngularJS $injector 依赖注入详解
Sep 14 #Javascript
You might like
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
2016/04/19 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python实现拼接多张图片的方法
2014/12/01 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python 多线程Threading初学教程
2017/08/22 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
python数字类型math库原理解析
2020/03/02 Python
Python实现区域填充的示例代码
2021/02/03 Python
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
电气工程及其自动化学生实习自我鉴定
2013/09/19 职场文书
学生档案自我鉴定
2013/10/07 职场文书
实习生自荐信范文
2013/11/13 职场文书
列车长先进事迹材料
2014/01/25 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
大学生学习计划书
2014/09/15 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
教师党员自我评价范文
2015/03/04 职场文书
六年级作文之自救
2019/12/19 职场文书
用Python实现Newton插值法
2021/04/17 Python