zoukankan      html  css  js  c++  java
  • Angular-搜索框及价格上下限

    Angular-搜索框及价格上下限

      闲来无事,写一个简单的angular的搜索框。

    1.要求:

    利用 AngularJS 框架实现手机产品搜索功能,题目要求:
    1)自行查找素材,按照原有数据格式将手机产品数据丰富到至少10个以上
    2)自行设计页面,需要包含“搜索条件部分”,“手机信息显示部分”
    3)当更改任何搜索条件时,需要实时显示搜索结果在“显示部分”中
    4)搜索条件具体要求:
    搜索框(匹配操作系统、产品名、产商进行模糊查询)
    价格区间(开始价格~结束价格)

    2.需求分析:

    首先,我们需要将商品渲染到页面上。

    其次,当我们输入搜索框文本时,动态显示符合搜索框文本的商品。

    其中,动态指的时我们每输入一个字符,都会进行产品的筛选。

    最后,价格的上下限也是同样的原理。

    那么,这样一来,我们使用angular是最为方便的。因为angular对双向数据的支持非常好。

    3.实际代码:

    1)HTML代码:

     1 <!DOCTYPE html>
     2 <html lang="zh-CN">
     3 <head>
     4     <meta charset="utf-8">
     5     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     6     <meta name="viewport" content="width=device-width,initial-scale=1">
     7     <title>AngularJS Page Useing Bootstrap Framework</title>
     8     <link rel="stylesheet" href="">
     9     <script src="./lib/angular/angular-v1.6.6.js"></script>
    10 </head>
    11 <body ng-app="searchApp">
    12     <div ng-controller="dataCtrl">
    13         <input type="text" name="搜索框" ng-model="content" placeholder="请输入要搜索的物品">
    14         <input type="text" name="价格上限" ng-model="top" placeholder="价格上限">
    15         <input type="text" name="价格下限" ng-model="bottom" placeholder="价格下限">
    16         <div>
    17             <ul>
    18                 <li ng-repeat="p in datas">
    19                     {{p.name}}
    20                 </li>
    21             </ul>
    22         </div>
    23     </div>
    24 </body>
    25 </html>

    2)JS代码:

     1     let httpApp = angular.module( 'searchApp', [] );
     2     
     3     httpApp.controller( 'dataCtrl', [ "$scope", "$http", function( $scope, $http ){
     4         let http = $http.get( "conf.json" );
     5         //模拟从后端获取的json数据。
     6         $scope.content = '';
     7         $scope.$watch("content + top + bottom",function(){
     8             http.then(
     9                 // success callback
    10                 function success( response ){
    11                     $scope.datas = response.data;
    12                     //进行价格筛选。
    13                     $scope.datas=$scope.datas.filter(function( x,index ){
    14                         if($scope.top===undefined&&$scope.bottom===undefined)
    15                         {
    16                             return 1;
    17                         }
    18                         else if($scope.top===undefined){
    19                             return x.price>=$scope.bottom
    20                         }
    21                         else if($scope.bottom===undefined){
    22                             return x.price<=$scope.top;
    23                         }
    24                         else{
    25                             return x.price>=$scope.bottom&&x.price<=$scope.top;
    26                         }
    27                     });
    28                     //进行搜索内容筛选。
    29                     $scope.datas=$scope.datas.filter(function( x,index ){
    30                         system=x.system.indexOf($scope.content)+1;
    31                         name = x.name.indexOf($scope.content)+1;
    32                         producer=x.producer.indexOf($scope.content)+1;
    33                         if(system+name+producer>=1){
    34                             return 1;
    35                         }
    36                         else{
    37                             return 0;
    38                         }
    39                     })
    40                 },
    41                 // error callback
    42                 function error( response ){
    43                     console.log( response );
    44                 }
    45             );
    46         });
    47     } ] );

    PS:为了偷懒,我并没有写很好看的样式。如果你需要,可以自己添加。

    3)conf.json代码:

      1 [
      2     {
      3         "system": "ios",
      4         "name": "Apple iPhone 6s 16GB 玫瑰金色",
      5         "price": 4698,
      6         "producer": "Apple",
      7         "pic": "01.jpg"
      8     },
      9     {
     10         "system": "MIUI",
     11         "name": "小米手机4S 全网通版 2GB内存 16GB 白色",
     12         "price": 1499,
     13         "producer": "小米",
     14         "pic": "02.jpg"
     15     },
     16     {
     17         "system": "Android",
     18         "name": "魅蓝note3 (16GB) 银色 全网通公开版 双卡双待",
     19         "price": 1099,
     20         "producer": "魅族科技",
     21         "pic": "03.jpg"
     22     },
     23     {
     24         "system": "ios",
     25         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     26         "price": 6587,
     27         "producer": "Apple",
     28         "pic": "04.jpg"
     29     },
     30     {
     31         "system": "ios",
     32         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     33         "price": 6578,
     34         "producer": "Apple",
     35         "pic": "04.jpg"
     36     },
     37     {
     38         "system": "ios",
     39         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     40         "price": 6788,
     41         "producer": "Apple",
     42         "pic": "04.jpg"
     43     },
     44     {
     45         "system": "ios",
     46         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     47         "price": 6878,
     48         "producer": "Apple",
     49         "pic": "04.jpg"
     50     },
     51     {
     52         "system": "ios",
     53         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     54         "price": 6528,
     55         "producer": "Apple",
     56         "pic": "04.jpg"
     57     },
     58     {
     59         "system": "ios",
     60         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     61         "price": 6988,
     62         "producer": "Apple",
     63         "pic": "04.jpg"
     64     },
     65     {
     66         "system": "ios",
     67         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     68         "price": 6388,
     69         "producer": "Apple",
     70         "pic": "04.jpg"
     71     },
     72     {
     73         "system": "ios",
     74         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     75         "price": 6378,
     76         "producer": "Apple",
     77         "pic": "04.jpg"
     78     },
     79     {
     80         "system": "ios",
     81         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     82         "price": 6738,
     83         "producer": "Apple",
     84         "pic": "04.jpg"
     85     },
     86     {
     87         "system": "ios",
     88         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     89         "price": 6568,
     90         "producer": "Apple",
     91         "pic": "04.jpg"
     92     },
     93     {
     94         "system": "ios",
     95         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
     96         "price": 6558,
     97         "producer": "Apple",
     98         "pic": "04.jpg"
     99     },
    100     {
    101         "system": "ios",
    102         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
    103         "price": 6738,
    104         "producer": "Apple",
    105         "pic": "04.jpg"
    106     },
    107     {
    108         "system": "ios",
    109         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
    110         "price": 6428,
    111         "producer": "Apple",
    112         "pic": "04.jpg"
    113     },
    114     {
    115         "system": "ios",
    116         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
    117         "price": 652488,
    118         "producer": "Apple",
    119         "pic": "04.jpg"
    120     },
    121     {
    122         "system": "ios",
    123         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
    124         "price": 654588,
    125         "producer": "Apple",
    126         "pic": "04.jpg"
    127     },
    128     {
    129         "system": "ios",
    130         "name": "Apple iPhone 6s Plus 64GB 银色 移动联通电信4G手机",
    131         "price": 6545645688,
    132         "producer": "Apple",
    133         "pic": "04.jpg"
    134     }
    135 ]

    PS:通过对象模拟了服务器传输的json数据。另外,图片可以自行添加,实现。

    4.最后问题:

    当然,我上传上来的代码,还留了一个坑。如何在输入价格,再清空后,取消对应价格区间的限制。

    最后,搜索的方法,可以怎样优化,可以思考一下,作为一个拓展吧。

  • 相关阅读:
    第二天课程档案
    第一天课程档案
    SAM初步
    计算几何初步
    数论二次总结
    生成函数入门题汇总
    1500: [NOI2005]维修数列
    20170214
    【bzoj2286】[Sdoi2011]消耗战
    bzoj2223: [Coci 2009]PATULJCI
  • 原文地址:https://www.cnblogs.com/Tiancheng-Duan/p/8309587.html
Copyright © 2011-2022 走看看