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 ajax 路由和过滤器使用说明
Aug 02 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
Jul 09 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 Javascript
js监听鼠标事件控制textarea输入字符串的个数
Sep 29 Javascript
jQuery中find()方法用法实例
Jan 07 Javascript
jquery实现表单验证并阻止非法提交
Jul 09 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
vue2.0 自定义日期时间过滤器
Jun 07 Javascript
vue-cli常用设置总结
Feb 24 Javascript
关于微信小程序登录的那些事
Jan 08 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
js定时器+简单的动画效果实例
2017/11/10 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
python文件操作相关知识点总结整理
2016/02/22 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
苏宁红孩子母婴商城:redbaby
2017/02/12 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
汉语言文学毕业求职信
2014/07/17 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android
Android Studio 计算器开发
2022/05/20 Java/Android