最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Vuejs的搜索匹配功能實現(xiàn)方法

 更新時間:2018年03月03日 13:48:54   作者:here962464  
下面小編就為大家分享一篇基于Vuejs的搜索匹配功能實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

大概長這個樣子:

數(shù)據(jù)都是假的

代碼部分

(注意我引用的是本地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:[
            //假數(shù)據(jù)
            {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
          }
        },
        //通過計算屬性過濾數(shù)據(jù)
        computed:{
          list: function(){
            var _this = this;
            //邏輯-->根據(jù)input的value值篩選goodsList中的數(shù)據(jù)
            var arrByZM = [];//聲明一個空數(shù)組來存放數(shù)據(jù)
            for (var i=0;i<this.goodsList.length;i++){
              //for循環(huán)數(shù)據(jù)中的每一項(根據(jù)name值)
              if(this.goodsList[i].name.search(this.searchVal) != -1){
                //判斷輸入框中的值是否可以匹配到數(shù)據(jù),如果匹配成功
                arrByZM.push(this.goodsList[i]);
                //向空數(shù)組中添加數(shù)據(jù)
              }
            }
            //邏輯-->升序降序排列 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];
                }
              });
            }
            //一定要記得返回篩選后的數(shù)據(jù)
            return arrByZM;
          }
        }
      });
    </script>
  </body>
</html>

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

以上這篇基于Vuejs的搜索匹配功能實現(xiàn)方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue 在methods中調(diào)用mounted的實現(xiàn)操作

    vue 在methods中調(diào)用mounted的實現(xiàn)操作

    這篇文章主要介紹了vue 在methods中調(diào)用mounted的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue計算屬性想要傳入?yún)?shù)如何解決

    vue計算屬性想要傳入?yún)?shù)如何解決

    這篇文章主要介紹了vue計算屬性想要傳入?yún)?shù)如何解決問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue3實現(xiàn)可視化拖拽標簽小程序功能

    Vue3實現(xiàn)可視化拖拽標簽小程序功能

    這篇文章主要介紹了Vue3實現(xiàn)可視化拖拽標簽小程序,實現(xiàn)功能可視化標簽拖拽,雙擊標簽可修改標簽內(nèi)容,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實現(xiàn)代碼

    Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實現(xiàn)代碼

    這篇文章主要介紹了Vue.js在數(shù)組中插入重復(fù)數(shù)據(jù)的實現(xiàn)代碼,需要的朋友可以參考下
    2017-11-11
  • Vue3中引入scss文件的方法步驟

    Vue3中引入scss文件的方法步驟

    這篇文章主要給大家介紹了關(guān)于Vue3中引入scss文件的方法步驟,在實際項目中,各種樣式往往有很多重復(fù)的情況,為了能夠使樣式的后續(xù)開發(fā)和維護更加愜意,將這些共同的代碼進行命名然后調(diào)用這些變量是一個很好的選擇,需要的朋友可以參考下
    2023-08-08
  • vue2.6.10+vite2開啟template模板動態(tài)編譯的過程

    vue2.6.10+vite2開啟template模板動態(tài)編譯的過程

    這篇文章主要介紹了vue2.6.10+vite2開啟template模板動態(tài)編譯,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Vuejs中使用markdown服務(wù)器端渲染的示例

    Vuejs中使用markdown服務(wù)器端渲染的示例

    這篇文章主要介紹了Vuejs 中使用 markdown的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 關(guān)于全局安裝vue-cli遇到的問題及解決

    關(guān)于全局安裝vue-cli遇到的問題及解決

    這篇文章主要介紹了關(guān)于全局安裝vue-cli遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 在vue上使用cesium開發(fā)三維地圖的詳細過程

    在vue上使用cesium開發(fā)三維地圖的詳細過程

    這篇文章主要給大家介紹了關(guān)于在vue上使用cesium開發(fā)三維地圖的詳細過程,Cesium是一個強大的JavaScript庫,支持三維地理信息展示,并提供了豐富的地理空間數(shù)據(jù)可視化功能,需要的朋友可以參考下
    2023-12-12
  • 使用vue-draggable-plus實現(xiàn)拖拽排序

    使用vue-draggable-plus實現(xiàn)拖拽排序

    最近遇到一個需求,在 Vue3 的一個 H5 頁面當中點擊拖拽圖標上下拖動 tab 子項,然后點擊保存可以保存最新的 tab 項順序,同事說可以用 vue-draggable-plus 這個庫來實現(xiàn)拖拽,所以本文給大家介紹了如何使用vue-draggable-plus實現(xiàn)拖拽排序,需要的朋友可以參考下
    2024-01-01

最新評論

新蔡县| 南宫市| 普兰县| 新宁县| 阳新县| 安平县| 桑日县| 松滋市| 东乡族自治县| 靖远县| 体育| 梁平县| 铁力市| 桐柏县| 永清县| 南和县| 东阳市| 定边县| 大同县| 三门县| 靖安县| 简阳市| 韶关市| 醴陵市| 泸定县| 洛阳市| 寿宁县| 江华| 延庆县| 织金县| 洛南县| 定日县| 仁寿县| 祁阳县| 卢湾区| 和顺县| 都江堰市| 保靖县| 长乐市| 澄迈县| 清徐县|