我正在使用Vue JS进行viewmodel绑定.在我的data对象中,我有一个按升序(从最早到最新)排序的项目数组,出于基于代码的原因,我希望保持这种方式.

var v = new Vue({
    el: '#app',
    data: {
        items: [
            {id: 51,  message: 'first'},
            {id: 265, message: 'second'},
            {id: 32,  message: 'third'}
        ],
    }
}

但是,当我在模板中显示数组时,我希望颠倒顺序,使其降序(从最新到最旧).我try 了以下方法:

<ol>
    <li v-for="item in items | orderBy -1" track-by="id">

这不起作用,因为orderBy过滤器似乎需要一个字段名作为其第一个参数.

有没有办法在模板中使用v-for语法和orderBy过滤器来实现这一点?还是我必须创建一个自定义的reverse过滤器?

推荐答案

Note:以下内容适用于Vue 1,但在Vue 2中,过滤器已被弃用,而您

您可以创建一个自定义过滤器,以按相反顺序返回项目:

Vue.filter('reverse', function(value) {
  // slice to make a copy of array, then reverse the copy
  return value.slice().reverse();
});

然后在v-for表达式中使用它:

<ol>
    <li v-for="item in items | reverse" track-by="id">

https://jsfiddle.net/pespantelis/sgsdm6qc/

Vue.js相关问答推荐

如何只提取一次用于无线电组过滤的数据,而不是针对数据库中的每个条目提取数据?

如何向 添加方法和 v-model?

我如何使用 vuejs 在我的 url 中编码一个令牌

如何使用 async/await 在 vue js 中添加标头

Nuxt 2.15.7 的构建错误 - 无法解析 CSS @font-face URL

使用 Vue.js 将文件输入绑定到按钮

v-for 内部的组件

避免在运行时向 Vue 实例或其根 $data 添加响应式属性

Vue动态mapGetters

如何在 vue.js 中删除类

为什么不先移动鼠标就无法滚动视差?

在渲染组件之前从 api 获取数据

Angular 5 中的 功能

Vue-test-utils:在单个测试中多次使用 $nextTick

我在 Nuxt 2.14.0 中运行的是什么版本的 Vue?

axios 拦截器响应未定义

VueJS 路由 - 使用子路由和 Vuetify 时如何停止多个活动路由(active routes)?

如何在 vue.js 中进行嵌入?

TypeError: Object(...) 不是 Vue 中的函数

vue-cli@3 没有可用于依赖类型的模块工厂:CssDependency