2016-08-02 37 views
2

如何使用Vue.js 2.0中的計算屬性過濾數組?這個任務在Vue的舊版本中是相當簡單的,但現在它更加涉及。我在一個表中顯示數據:如何使用計算屬性過濾數組?

<tr v-for="person in filterPeople"> 
    <td>{{person.name}}</td> 
    <td>{{person.age}}</td> 
</tr> 

和我有一個輸入字段,我可以通過姓名和年齡進行篩選。我不知道我在做什麼錯在這裏:

computed: { 

    filterPeople: function(){ 
    var self = this 
    return this.people.filter(function(p){ 
     return p.name.indexOf(self.searchDetails) > - 1 
    }) 
    } 
} 

如果我在輸入類型不按姓名或年齡,因爲我希望篩選的人。演示:http://codepen.io/p-adams/pen/AXPKko

+0

請編輯您的問題,直接在問題主體中顯示相關代碼。 – nnnnnn

+0

編輯我的問題 –

回答

4

你的問題很簡單。您在表格內使用輸入標籤。嘗試添加一個包含div標籤。給它的應用程序ID,並把輸入元素。這應該解決這個問題。

<div id="app"> 
    <input 
     class="form-control" 
     v-model="searchDetails" 
     placeholder="filter by name or age" 
     > 
    <table class="table table-striped" > 
     <thead> 
     ...rest of code 

Vue仍受一些HTML規則的約束,其中一個是table標籤只能將某些標籤作爲直接子標籤。

+0

啊是的。不知道我是如何錯過的。謝謝。 –

+0

當你用Vue來思考時,它實際上很容易做到。因爲通常你有更多的模板靈活性。 – qw3n

+0

好的。我想知道爲什麼我無法按年齡過濾。似乎只適用於名稱。內置過濾器讓事情變得更容易。 –