我很难尝试用orderBy来连接filterBy,在vuejs 2.0上,我发现了关于这个主题的所有研究成果,我的问题。Vuejs 2在同一个计算属性中使用filterBy和orderBy
这是我的过滤器,这是工作:
// computed() {...
filteredResults() {
var self = this
return self.results
.filter(result => result.name.indexOf(self.filterName) !== -1)
}
调用组件的方法:
// methods() {...
customFilter(ev, property, value) {
ev.preventDefault()
this.filterBook = value
}
在组件:
// Inside my component
<a href="#" @click="customFilter($event, 'name', 'Name..')">Name..</a>
而另一个过滤器,也可以使用:
// computed() {...
orderByResults: function() {
return _.orderBy(this.results, this.sortProperty, this.sortDirection)
}
要遵守我的OrderBy我有这样的方法:
// methods() {...
sort(ev, property) {
ev.preventDefault()
if (this.sortDirection == 'asc' && this.sortProperty == property) {
this.sortDirection = 'desc'
} else {
this.sortDirection = 'asc'
}
this.sortProperty = property
}
,并呼吁它,我有以下几点:
// Inside my component
<a href="#" @click="sort($event, 'name')">Name..</a>
我在docs我们如何使用这个排序依据发现的,在this very long conversation如何使用过滤器联合排序,但我真的不能实现它...
这应该是一些这样的:
filteredThings() {
return this.things
.filter(item => item.title.indexOf('foo') > -1)
.sort((a, b) => a.bar > b.bar ? 1 : -1)
.slice(0, 5)
}
我不能做这样的工作...
我多种形式的尝试为:
.sort((self.sortProperty, self.sortDirection) => this.sortDirection == 'asc' && this.sortProperty == property ? this.sortDirection = 'desc' : this.sortDirection = 'asc')
但尽管如此,还是它不会编译或它带有错误,如:
属性未定义(这是定义如我是我们在另一种方法)funcion的 方法没有找到荷兰国际集团它(是发生在我的评论方法排序 ..也许这里就是我失去了一些东西)
感谢您的帮助!
很好地完成!非常感谢您的宝贵时间。唯一缺少的是发送字段名称的选项,例如**属性**。我拥有的是一本书,所以,用户必须通过*书名*,*作者*,*编辑器*等来订购。这就是我的例子中的** _。orderBy(Array,Field,Direction )**。干杯! – Evis
我可能通过使用外部函数** by()**来解决它,它将获取字段名称。我会尽力这样做,然后回到这里的评论中。 – Evis
@Aletheios你介意编辑来展示如何将这个扩展到测试数据中的任意字段?无法让我的头了解如何为sort函数的localeCompare方法中的“name”属性分配和使用变量。 –