国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于Vuejs的搜索匹配功能實現方法

2019-11-19 14:14:45
字體:
來源:轉載
供稿:網友

最近一直在看vue,查了很多資料,看了很多文檔和博客,大概半知半解了,然后利用所理解的知識寫了一個簡單的搜索匹配功能。

大概長這個樣子:

數據都是假的

代碼部分

(注意我引用的是本地vue.min.js文件,請注意文件路徑。)

<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <title>Vue測試2</title>    <script type="text/javascript" src="vue.min.js"></script>    <style type="text/css">      *{        padding: 0;        margin: 0;        font-size: 14px;        font-family: "微軟雅黑";      }      #box{        width: 500px;        height: auto;        border: 1px solid #ccc;        margin: 50px auto;        padding: 10px;      }      .search{        width: 480px;        height: 100px;        text-align: center;      }      .searchBox{        width: 230px;        height: 40px;        outline: none;        text-indent: 10px;        margin-right: 20px;      }      .btn{        width: 100px;        height: 50px;        cursor: pointer;        font-size: 18px;      }      .goodsheet{        width: 500px;        height: auto;        border: 1px solid #eee;      }      .goodsheet tr td,      .goodsheet tr th{        width: 33%;        border: 1px solid #eee;        padding: 5px 10px;        text-align: left;      }      .goodsheet tr th span{        background: #ff9900;        padding: 0 6px;        color: #fff;        cursor: pointer;      }    </style>  </head>  <body>    <div id="box">      <div class="search">        <input type="text" class="searchBox" v-model="searchVal">        <button class="btn">搜 索</button>      </div>      <table class="goodsheet">        <tr>          <th>商品名</th>          <th>單價            <span @click="orderFn('price', false)">↑</span>            <span @click="orderFn('price', true)">↓</span>          </th>          <th>銷量            <span @click="orderFn('sales', false)">↑</span>            <span @click="orderFn('sales', true)">↓</span>          </th>        </tr>        <tr v-for='(item, key) in list'>          <td>{{item.name}}</td>          <td>{{item.price}}</td>          <td>{{item.sales}}萬</td>        </tr>      </table>    </div>    <script type="text/javascript">      var myVueTest = new Vue({        el:'#box',        data:{          goodsList:[            //假數據            {name:"三星Galaxy Note8",price:5200,sales:2.6},            {name:"iphone5s",price:2500,sales:2.2},            {name:"iphone6",price:2800,sales:1.6},            {name:"iphone6s",price:3200,sales:2.9},            {name:"iphone7",price:3800,sales:12.6},            {name:"iphone7plus",price:4200,sales:2.1},            {name:"iphone8",price:5500,sales:10.6},            {name:"華為",price:4600,sales:7.6},            {name:"小米",price:1200,sales:32.6},            {name:"OPPOR11",price:3000,sales:1.2},            {name:"vivoX20",price:3250,sales:2.9}          ],          searchVal:'',  //默認輸入為空          letter:'',    //默認不排序          original:false  //默認從小到大排列        },        methods:{          orderFn(letter,original){            this.letter = letter;    //排序字段 price or sales             this.original = original;  //排序方式 up or down          }        },        //通過計算屬性過濾數據        computed:{          list: function(){            var _this = this;            //邏輯-->根據input的value值篩選goodsList中的數據            var arrByZM = [];//聲明一個空數組來存放數據            for (var i=0;i<this.goodsList.length;i++){              //for循環數據中的每一項(根據name值)              if(this.goodsList[i].name.search(this.searchVal) != -1){                //判斷輸入框中的值是否可以匹配到數據,如果匹配成功                arrByZM.push(this.goodsList[i]);                //向空數組中添加數據              }            }            //邏輯-->升序降序排列 false: 默認從小到大 true:默認從大到小            //判斷,如果要letter不為空,說明要進行排序            if(this.letter != ''){              arrByZM.sort(function( a , b){                if(_this.original){                  return b[_this.letter] - a[_this.letter];                }else{                  return a[_this.letter] - b[_this.letter];                }              });            }            //一定要記得返回篩選后的數據            return arrByZM;          }        }      });    </script>  </body></html>

其實核心算法還是用原生JS寫的,vue提供了很強大的數據綁定方法,但是如果只知道vue這個框架,沒有自己的核心思想的話,還是沒多大用處的,所以作者在官方文檔里面說希望我們是有一定JS基礎的。我還是覺得前端框架再多,最厲害的永遠是原生JS。

以上這篇基于Vuejs的搜索匹配功能實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通山县| 三原县| 黎平县| 农安县| 漳州市| 晋江市| 竹山县| 宣化县| 江达县| 江华| 米林县| 南华县| 新竹县| 杭锦后旗| 宜良县| 札达县| 通许县| 岱山县| 瑞安市| 峡江县| 客服| 饶平县| 上杭县| 新闻| 瓮安县| 林甸县| 康保县| 辽中县| 东源县| 扶绥县| 通州区| 西畴县| 方山县| 香河县| 山阴县| 高雄市| 兴城市| 揭东县| 静宁县| 澎湖县| 上饶县|