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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
Sep 05 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
辨析JavaScript中的Undefined类型与null类型
May 26 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
vue 中directive功能的简单实现
Jan 05 Javascript
基于PHP pthreads实现多线程代码实例
Jun 24 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 Javascript
VUE项目实现主题切换的多种方法
Nov 26 Vue.js
前端学习——JavaScript原生实现购物车案例
Mar 31 Javascript
为什么node.js不适合大型项目
Apr 28 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/08/23 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
php短信接口代码
2016/05/13 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
JS实现简单省市二级联动
2019/11/27 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
Python中处理unchecked未捕获异常实例
2015/01/17 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
Python关于__name__属性的含义和作用详解
2020/02/19 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
详解python with 上下文管理器
2020/09/02 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
2014年党员自我评议对照检查材料
2014/09/20 职场文书
见习报告格式要求
2014/11/04 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js