2016-08-02 104 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

好的。我想知道为什么我无法按年龄过滤。似乎只适用于名称。内置过滤器让事情变得更容易。 –