ホームページ  >  記事  >  ウェブフロントエンド  >  Vuejsの検索マッチング関数例を詳しく解説

Vuejsの検索マッチング関数例を詳しく解説

小云云
小云云オリジナル
2018-02-26 11:11:132742ブラウズ

この記事では、主に Vuejs の検索マッチング関数の例を紹介します。私は最近 Vue を読んで、多くの情報を確認し、多くのドキュメントやブログを読み、おそらくその知識を部分的に使用しました。単純な検索一致関数を作成することを理解しました。

おそらく次のようになります:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue测试2</title>
<script type="text/javascript" src="js/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>
<p id="box">
<p class="search">
<input type="text" class="searchBox" v-model="searchVal">
<button class="btn">搜 索</button>
</p>
<table class="goodsheet">
<tr>
<th>商品名</th>
<th>单价
<span @click="orderFn(&#39;price&#39;, false)">↑</span>
<span @click="orderFn(&#39;price&#39;, true)">↓</span>
</th>
<th>销量
<span @click="orderFn(&#39;sales&#39;, false)">↑</span>
<span @click="orderFn(&#39;sales&#39;, true)">↓</span>
</th>
</tr>
<tr v-for=&#39;(item, key) in list&#39;>
<td>{{item.name}}</td>
<td>{{item.price}}</td>
<td>{{item.sales}}万</td>
</tr>
</table>
</p>
<script type="text/javascript">
var myVueTest = new Vue({
el:&#39;#box&#39;,
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:&#39;&#39;,    //默认输入为空
letter:&#39;&#39;,       //默认不排序
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 != &#39;&#39;){
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>

関連する推奨事項:

php ajax 実入力自動検索マッチングプログラムコード_PHP チュートリアル

以上がVuejsの検索マッチング関数例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。