我正在使用Vue JS进行视图模型绑定。在我的data
对象中,我有一系列按升序排列(从最旧到最新)的项目,出于基于代码的原因,我想保持这种方式。
var v = new Vue({
el: '#app',
data: {
items: [
{id: 51, message: 'first'},
{id: 265, message: 'second'},
{id: 32, message: 'third'}
],
}
}
但是,当我在模板中显示数组时,我想颠倒顺序,以使其降序排列(从最新到最旧)。我尝试了以下方法:
<ol>
<li v-for="item in items | orderBy -1" track-by="id">
这不起作用,因为orderBy
过滤器似乎要求将字段名称作为其第一个参数。
有什么方法可以v-for
使用orderBy
过滤器的语法在模板中完成此操作?还是我必须创建一个自定义reverse
过滤器?
Vue2更新
我想展示一些可以处理数据而不使用过滤器的方法,因为Vue2 中不推荐使用过滤器:
内部计算属性
使用计算属性代替过滤器,这会更好,因为您可以在组件中的所有位置使用该数据,而不仅仅是在模板中使用: jsFiddle
在Vuex getter属性内
如果您使用的是Vuex,并且您将数据存储在
store.state
object中。对状态中存储的数据进行转换的最好方法是在getters
对象中进行转换(例如,对项目列表进行过滤并对其进行计数,颠倒顺序等)。并从组件计算属性的getter获取状态: