首页  >  问答  >  正文

javascript - v-for="n in 10" 怎样实现排序,默认是1到10,从10到1怎么实现?

v-for="n in 10" 怎样实现排序,默认是1到10,从10到1怎么实现?

習慣沉默習慣沉默2711 天前670

全部回复(7)我来回复

  • 滿天的星座

    滿天的星座2017-05-19 10:27:39

    想从10到1,直接11 - n不就行了吗……
    干嘛这么耿直……

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:27:39

    题主没有写vue标签但是我看到了v-for指令.题主应该是问怎么用vue实现1-10倒序排列。
    假设有如下一个vue组件


          var vm = new Vue({
                el: '#app',
                template: `
                        <ul>
                        <li v-for="item in arr">loop {{item}}</li>
                        </ul>
                       
                       `,
                
                filters: {
                    
                },
                data() {
                    return {
                        arr:10,
            
                    }
            
                },
            
            })
            
            

    1.采用filter

    filters: {
            sort(v) {
                if (!v)
                    return ''
                else {
                    return 11 - v
                }
            },
            template:`<ul><li v-for="item in arr">{{item|sort}}</li></ul>`

    2.采用vue方法

     template: `
                <ul>
                <li v-for="item in arr">{{reverseNumber(item)}}</li>
                </ul>
               
               `,
                methods: {
            reverseNumber(x) {
                return 11 - x
            },
            }

    这样的循环一个数字是没有办法采用计算属性的,计算属性是data中一个值改变后,把他映射到另外一个值相当于一个函数,而v-for是循环了列表的数据相当于一个迭代器,并没有改变数据data的某个属性值。


    建议你循环一个数组或对象,不要直接循环数字。除非逻辑真的很简单,就是循环生成几个标签。把一个数组元素排序你还可以采用,sort()传入倒序排序函数,这样就可以用计算属性,先映射排序数组到计算属性,然后v-for循环倒序排列的计算属性。也可以实现倒序排列。

    简单的情况下我推荐用过滤器,也就是angular的管道

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:27:39

    那你需要自建一个数组存放10~1

    回复
    0
  • 滿天的星座

    滿天的星座2017-05-19 10:27:39

    可以用计算属性,具体看【传送门】,传入js的排序方法sort,不懂sort看

    【这里】

    回复
    0
  • PHP中文网

    PHP中文网2017-05-19 10:27:39

    如果是vue里面,还可以考虑用过滤器filters转换

    回复
    0
  • 仅有的幸福

    仅有的幸福2017-05-19 10:27:39

    雷雷

    回复
    0
  • 高洛峰

    高洛峰2017-05-19 10:27:39

    3种方法:1.采用filter过滤 2.计算属性 3.methods事件 处理事件11-n比较简单的

    回复
    0
  • 取消回复