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插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
Feb 04 Javascript
jquery怎样实现ajax联动框(一)
Mar 08 Javascript
javascript弹出拖动窗口
Aug 11 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
Nov 11 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
JQuery validate 验证一个单独的表单元素实例
Feb 17 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
Angular4 反向代理Details实践
May 30 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
微信小程序 搜索框组件代码实例
Sep 06 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浮点比较大小的方法
2016/02/14 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js 获取浏览器版本以此来调整CSS的样式
2014/06/03 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
JavaScript实现点击单元格改变背景色的方法
2016/02/12 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python中协程用法代码详解
2018/02/10 Python
深入浅析Python传值与传址
2018/07/10 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
介绍下WebSphere的安全性
2013/01/31 面试题
软件测试有哪些?什么是配置项?
2012/02/12 面试题
Delphi工程师笔试题
2013/09/21 面试题
品牌宣传方案
2014/03/21 职场文书
年终晚会主持词
2014/03/25 职场文书
个人自我鉴定总结
2014/03/25 职场文书
客房部经理岗位职责
2015/02/02 职场文书
运动会运动员赞词
2015/07/22 职场文书
大学入学感言
2015/08/01 职场文书
python tqdm用法及实例详解
2021/06/16 Python
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang