2016-04-12 9 views
0

現在、filterByフィルタは、文字列全体で一致する値を探します。例えば、 "e"でフィルタリングした場合、フィルタリングされた結果は、 "エンターテインメント"、 "インターネット"、 "サービス"を伴う可能性があります。FilterBy from Start of String

filterByに、文字列の先頭からのマッチングを開始し、残りの部分を無視して、そのセットから戻ってくる唯一の結果が「エンターテイメント」になるように指示する方法はありますか?

答えて

3

あなた自身でFilterと書いて、検索中のフィールドindexOfを確認できます。

次に、あなたのフィルタはこのような何か見ることができるのは、あなたが

<div id="app"> 
    <input v-model="search"> 
    <div v-for="item in items | startsWith search 'name'"> 
    {{ item.name }} 
    </div> 
</div> 

を持っているとしましょう:

Vue.filter('startsWith', function (array, search, field) { 
    if (!search.length) return array; 

    return array.filter(function(element) { 
    return element[field].toLowerCase().indexOf(search.toLowerCase()) === 0; 
    }) 
}) 

は、ここでは簡単のデモです:感謝https://jsfiddle.net/jb22wp1b/

+0

、それはのためのチェックを追加した後に動作しますundefined: if(検索===未定義||!search.length)戻り値の配列。 – Frisbetarian

+0

データ内で検索を定義する必要があります。 –