2017-12-23 16 views
0

Vue2の入力フィルタを使用してテーブル内にforeachループを作成しようとしています。これは動作しますが、フィルタを作成する必要があります。フィルタ付きのVue2リスト

入力コードが

<div class="form-group"> 
    <input v-model="search" class="form-control" placeholder="Search shortcut..."> 
</div> 

ループは、質問UPDATE

これはJS(ヴュ)コードである

<tr v-for="edition in editions" > 
    <td></td> 
    <td class="alert alert-success">{{ edicion.intellij }}</td> 
    <td class="alert alert-info">{{ edicion.eclipse }}</td> 
    <td>{{ edicion.descripcion }}</td> 
</tr> 

あります。このコードでは、 'エディション'には要素が1つしかありませんが、実際には複数の要素があります。

new Vue({ 
    el: '#app', 
    data: { 
     search: '', 
    editions: [{ 
      intellij: "Ctrl + Espacio", 
      eclipse: "Ctrl + Espacio", 
      description: "Autocompletado de código (clases, métodos, variables)" 
    }], 
}, 

});

今、入力テキストで「エディション」をフィルタリングできるようにするにはどうすればよいですか?

+0

あなたはすべての配列で何を意味するのですか? – samayo

+0

質問が更新されました。 –

+0

あなたの期待される出力は何ですか – samayo

答えて

1

あなたが聞いていることはわかっていますが、配列をフィルタリングする検索フィールドとしてテキスト入力を使用するように思えます。 this.search変化の値として

https://codepen.io/nickforddesign/pen/YYpZYe?editors=1010

、計算された値は、配列をフィルタリングし、フィールドが空の場合、それだけの配列を返します。

<div class="app"> 
    <input type="text" v-model="search"> 
    <table> 
    <tbody> 
     <tr v-for="(edition, index) in matches" :key="index"> 
     <td></td> 
     <td class="alert alert-success">{{ edition.intellij }}</td> 
     <td class="alert alert-info">{{ edition.eclipse }}</td> 
     <td>{{ edition.description }}</td> 
     </tr> 
    </tbody> 
    </table> 

とJS:

new Vue({ 
    el: '.app', 
    data() { 
    return { 
     search: '', 
     editions: [{ 
     intellij: "Ctrl + Espacio", 
     eclipse: "Ctrl + Espacio", 
     description: "Autocompletado de código (clases, métodos, variables)" 
     }, { 
     intellij: "Ctrl + C", 
     eclipse: "Ctrl + C", 
     description: "Copiar" 
     }, { 
     intellij: "Ctrl + V", 
     eclipse: "Ctrl + V", 
     description: "Pegar" 
     }] 
    } 
    }, 
    computed: { 
    matches() { 
     return this.search 
     ? this.editions.filter(edition => { 
      let match = false 
      for (let key in edition) { 
      if (edition[key].toLowerCase().includes(this.search.toLowerCase())) { 
       return true 
      } 
      } 
     }) 
     : this.editions 
    } 
    } 
}) 
+0

これは正しい部分的な答えです。しかし、配列に複数の要素があるとします。すべての配列を検索する関数を作成できますか? 1つの要素だけではありません。 –

+0

私は 'edition'配列に複数の要素を含んでいましたが、それはあなたが話していることですか? – nickford

+0

私は、すべての異なる配列をフィルタリングするために複数の 'マッチ'を作成します。 –

関連する問題