Angular-搜索框及價格上下限

来源:https://www.cnblogs.com/Tiancheng-Duan/archive/2018/01/18/8309587.html
-Advertisement-
Play Games

Angular-搜索框及價格上下限 閑來無事,寫一個簡單的angular的搜索框。 1.要求: 利用 AngularJS 框架實現手機產品搜索功能,題目要求: 1)自行查找素材,按照原有數據格式將手機產品數據豐富到至少10個以上 2)自行設計頁面,需要包含“搜索條件部分”,“手機信息顯示部分” 3) ...


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.最後問題:

當然,我上傳上來的代碼,還留了一個坑。如何在輸入價格,再清空後,取消對應價格區間的限制。

最後,搜索的方法,可以怎樣優化,可以思考一下,作為一個拓展吧。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 之前我們講過JavaScript之DOM對象獲取的兩篇文章,本文是該系列文章之三,點擊回顧上兩篇文章能更好地理解本文。《JavaScript之DOM對象的獲取(一)》;《JavaScript之DOM對象的獲取(二)》接下來,開始講述本文內容。在文檔中,我們還可以通過不同的現象和特征獲取DOM對象。 ...
  • 之前通過nodejs連接到阿裡雲物聯網mqtt,後又用瀏覽器連接,總結一下: 由於項目是SPA,使用webpack,關鍵代碼: 同樣使用mqtt.js之前先install: npm install --save mqtt 然後在main.js導入 import mqtt from 'mqtt' 將m ...
  • 1 var arry = [ "C#", "html", "css", "JavaScript" ]; 2 var result= $.inArray("C#", arry); //如果arry數組裡面存在"C#" 這個字元串則返回該字元串的數組下標,否則返回(不包含在數組中) -1 ...
  • 0基礎前端菜鳥,啃了將近半月前端VUE框架,對前端知識有了初步的瞭解。下麵總結一下這段時間的學習心得。 ...
  • 希望大家積極反饋,有不足和更好的方法請大家一起分享和研究,第一次寫博客,有描述不清楚的地方,希望大家給我私信,我會努力改正。 ...
  • 本文首發於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 if語句 最基本的if語句 if語句的結構體:(格式) if語句也成為“選擇語句”、“條件判斷語句”。 多分支的if語句 格式: 以上所有的語句體中,只執行 ...
  • 直接上代碼! <!DOCTYPE html><html lang="en"><head> <title>小三角</title> <style> .up-triangle{ width:0px; height:0px; border-bottom:30px solid #000; border-lef ...
  • 在進行網站網頁設計製作的時候,經常需要用到不同的顏色的搭配,效果,網頁中標明顏色比較好的是用十六進位數據來進行標註,但是由於顏色很多,這些十六進位代碼數量龐大,所以blueslu整理了一些網站建設項目中網頁調色常用的顏色代碼,以備使用。 #9f0101 #67b55b #fff68f #ffd700 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...