zoukankan      html  css  js  c++  java
  • Vue04 -- 计算属性用法(v-for的筛选排序)

    <!DOCTYPE html>
    <html>
    <head>
        <title>Vue --- 计算属性用法</title>
    </head>
    <body>
        <div id="app1">
            {{prices()}}
        </div>
        
    
        <script type="text/javascript" src="https://unpkg.com/vue/dist/vue.min.js"></script>
        <script type="text/javascript">
            var app1 = new Vue({
                el:'#app1',
                data:{
                    package1:[
                        {
                            name:'耳机',
                            price:399,
                            count:2
                        },
                        {
                            name:'显示器',
                            price:488,
                            count:3
                        }
                    ],
                    package2:[
                        {
                            name:'苹果',
                            price:5,
                            count:6
                        },
                        {
                            name:'香蕉',
                            price:12,
                            count:3
                        },
                        {
                            name:'梨子',
                            price:7,
                            count:2
                        }
                    ]
                },
                // computed:{
                //     reversedText: {
                //         get:function () {
                //             return this.name1+'.'+this.name2;
                //         },
                //         set:function (newvalue) {
                //             var names = newvalue.split('.');
                //             this.name1 = names[0];
                //             this.name2 = names[1];
                //         }
                //     }
                // },
                methods:{
                    prices:function () {
                        var price = 0;
                        for (var i = this.package1.length - 1; i >= 0; i--) {
                            price+=this.package1[i].price * this.package1[i].count
                        }
    
                        for (var i = this.package2.length - 1; i >= 0; i--) {
                            price+=this.package2[i].price * this.package2[i].count
                        }
                        return price
                    }
                }
            })
    
        </script>
    </body>
    </html>

     计算属性实例 --- v-for实现筛选排序:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <div id="app">
                <h2>v-for遍历数组</h2>
                <input type="text" name="" id="" value="" v-model="searchp"/>
                <ul>
                    <li v-for="(p,index) in filterpersons" :key='index'>
                        {{index}} -- {{p.name}} -- {{p.age}}
                    </li>
                </ul>
                <button @click="sortbtn(1)">升序排列</button>
                <button @click="sortbtn(2)">降序排列</button>
                <button @click="sortbtn(0)">原本顺序</button>
                <h2>v-for遍历对象</h2>
                <ul>
                    <li v-for="(v,k) in persons[1]" :key='k'>
                        {{k}} -- {{v}}
                    </li>
                </ul>
            </div>
            
            <script src="https://vuejs.org/js/vue.js"></script>
            <script type="text/javascript">
                var  app = new Vue({
                    el:'#app',
                    data:{
                        searchp:'',
                        ordertype:0,//0原本,1升序,2降序
                        persons:[
                            {name:'aaa',age:18},
                            {name:'bbb',age:13},
                            {name:'ccc',age:28},
                            {name:'ddd',age:51},
                            {name:'ddd',age:20},
                            {name:'ddd',age:33},
                            {name:'ddd',age:23},
                        ]
                    },
                    computed:{
                        filterpersons(){
                            //取出相关数据
                            const  {searchp,persons,ordertype} = this;
                            //最终需要显示的数组
                            let  fpersons;
                            
                            fpersons = persons.filter(p => p.name.indexOf(searchp)!==-1)
                            
                            if(ordertype!==0){
                                fpersons.sort(function  (p1,p2) { // 返回负数p1在前
                                    //1升序,2降序
                                    if (ordertype == 2) {
                                        return p2.age-p1.age
                                    } else{
                                        return p1.age-p2.age
                                    }
                                })
                            }
                            return fpersons
                        }
                    },
                    methods:{
                        sortbtn(num){
                            this.ordertype = num
                        }
                    }
                })
            </script>
        </body>
    </html>
  • 相关阅读:
    OPENGLES 绘制纹理带黑圈pre-multiplying
    listview相关代码整理
    时区列表
    (迪杰斯特拉)Dijkstra算法
    全源最短路径(Floyd算法)
    go配置私有仓库 (go mod配置私有仓库)
    mingw+gcc 10.1下载
    线段树应用及概况
    清理docker常用命令
    minio设置永久访问链接
  • 原文地址:https://www.cnblogs.com/lee-xingxing/p/11103802.html
Copyright © 2011-2022 走看看