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 相关文章推荐
单独使用CKFinder选择图片的方法
Aug 21 Javascript
随窗体滑动的小插件sticky源码
Jun 21 Javascript
随鼠标上下滚动的jquery代码
Dec 05 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
JS中cookie的使用及缺点讲解
May 13 Javascript
浅谈ES6 模板字符串的具体使用方法
Nov 07 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
详解js location.href和window.open的几种用法和区别
Dec 02 Javascript
详解vue中v-bind:style效果的自定义指令
Jan 21 Javascript
JS写滑稽笑脸运动效果
May 28 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 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 数组的指针操作实现代码
2011/02/08 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
JSON语法五大要素图文介绍
2012/12/04 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
javascript实现动态标签云
2015/10/16 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
2016/12/15 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
python创建文件备份的脚本
2018/09/11 Python
对python的输出和输出格式详解
2018/12/08 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python统计时间内的并发数代码实例
2019/12/28 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
俄罗斯女装店:12storeez
2019/10/25 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
医院护理人员的自我评价分享
2013/10/04 职场文书
淘宝活动策划方案
2014/02/06 职场文书
爱护草坪标语
2014/06/24 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
Django drf请求模块源码解析
2021/06/08 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS