angular实现商品筛选功能


Posted in Javascript onFebruary 01, 2017

一、demo功能分析

1、通过service()创建数据并遍历渲染到页面
2、根据输入框的输入值进行字段查询
3、点击各列实现排序功能。

二、实现

1.1 数据定义与渲染

angular更偏向于是一个MVVM模式的框架,所以它的controller很薄,里面的业务逻辑也是少的,因此应该养成把逻辑写在service或者Factory等angular提供的可以自定义服务的方法中。此次demo通过angular的service方法来注册并定义商品数据。

angular.module("app",[])
.service("productData",function(){
  //通过service方法来定义数据,也可以通过factory方法来定义
  return [
    {
      id:1002,
      name:'HuaWei',
      quantity:200,
      price:4300
    },
    {
      id:2123,
      name:'iphone7',
      quantity:38,
      price:6300
    },
    {
      id:3001,
      name:'XiaoMi',
      quantity:3,
      price:2800
    },
    {
      id:4145,
      name:'Oppo',
      quantity:37,
      price:2100
    },
    {
      id:5563,
      name:'Vivo',
      quantity:23,
      price:2100
    }
  ]
})
//传入用service定义的productData数据依赖
.controller("myCtrl",function($scope,productData){
  $scope.data=productData; //进行相应赋值

  $scope.order=''; //单列排序用,后面详解
  $scope.changeOrder=function(type){
    $scope.orderType=type;
    if($scope.order===''){
      $scope.order='-';
    }else{
      $scope.order='';
    }
  }
})

数据渲染部分:

<table class="table">
      <thead>
      <tr>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('id')">产品编号<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('name')">产品各称<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('price')">产品价钱<span class="caret"></span></th>
      </tr>
      </thead>
      <tbody>
      <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
        <td>{{value.id}}</td>
        <td>{{value.name}}</td>
        <td>{{value.price}}</td>
      </tr>
      </tbody>

    </table>

说明:上面利用了bootstrap的caret类名来显示出三角符号,并通过给父元素加dropup使三角符号转向。
1、三角符号的转向与否由ng-class指令确定,传入表达式,当order===‘ '时,为true,则给th加上dropup类名
2、用ng-click指令绑定点击事件,实现点击就切换排序方式

2.2 搜索功能

采用angular的filter过滤器,搜索输入字段

<!--输入框采用ng-model绑定一个值-->
 搜索:<input type="text" ng-model="search">
 <!--通过filter:{id:search}实现以id为搜索内容,以search的值为搜索基准-->
 <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
        <td>{{value.id}}</td>
        <td>{{value.name}}</td>
        <td>{{value.price}}</td>
      </tr>

2.3 排序功能

1、定义order属性用于设置正序还是反序
2、定义orderType属性用于设置参考排序的值
3、定义changeOrder()方法用于实现点击就切换排序的功能

$scope.order=''; //当order为‘'时正序
 $scope.changeOrder=function(type){ //传入属性名,以此为基准排序
   $scope.orderType=type;
   if($scope.order===''){
     $scope.order='-'; //order为'-'时,反序
   }else{
     $scope.order='';
   }
 }

页面中:changeOrder()函数传入“类型”作为参数,并在函数内部通过\ $scope.orderType=type;设定排序的参考类型

<table class="table">
      <thead>
      <tr>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('id')">产品编号<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('name')">产品各称<span class="caret"></span></th>
        <th ng-class="{dropup:order===''}" ng-click="changeOrder('price')">产品价钱<span class="caret"></span></th>
      </tr>
      </thead>
      <tbody>
        <tr ng-repeat="value in data|filter:{id:search}|orderBy:order+orderType">
          <td>{{value.id}}</td>
          <td>{{value.name}}</td>
          <td>{{value.price}}</td>
        </tr>
      </tbody>
    </table>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 简短几句代码实现给元素动态添加及获取提示信息
Sep 01 Javascript
jquery隐藏标签和显示标签的实例
Nov 11 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 Javascript
javascript解决IE6下hover问题的方法
Jul 28 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
Bootstarp基本模版学习教程
Feb 01 #Javascript
angular实现表单验证及提交功能
Feb 01 #Javascript
Javascript基础回顾之(三) js面向对象
Jan 31 #Javascript
Javascript基础回顾之(二) js作用域
Jan 31 #Javascript
Javascript基础回顾之(一) 类型
Jan 31 #Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 #Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 #Javascript
You might like
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
jQuery 选择器理解
2010/03/16 Javascript
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
python中reload(module)的用法示例详解
2017/09/15 Python
python模拟事件触发机制详解
2018/01/19 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
信息工程学院毕业生推荐信
2013/11/05 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
单位接收函范文
2015/01/30 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers