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 相关文章推荐
js中的preventDefault与stopPropagation详解
Jan 29 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
jQuery使用之标记元素属性用法实例
Jan 19 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
Apr 05 Javascript
在JavaScript中如何解决用execCommand(
Oct 19 Javascript
深入理解JavaScript中的并行处理
Sep 22 Javascript
Node.js的特点详解
Feb 03 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
Jun 03 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
8个非常实用的Vue自定义指令
Dec 15 Vue.js
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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php的dl函数用法实例
2014/11/06 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
AngularJS的ng-click传参的方法
2017/06/19 Javascript
原生js调用json方法总结
2018/02/22 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
社团文化节策划书
2014/02/01 职场文书
工厂搬迁方案
2014/05/11 职场文书
大学生创业事迹材料
2014/12/30 职场文书
人与自然观后感
2015/06/16 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers