登录  /  注册
首页 > web前端 > js教程 > 正文

vue列表排序实现中的this问题的详细介绍(代码示例)

不言
发布: 2019-03-15 17:05:14
转载
2315人浏览过

本篇文章给大家带来的内容是关于vue列表排序实现中的this问题的详细介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

最近在看vue框架的知识,然后其中有个例子中的this的写法让我很疑惑

nbsp;html>


    <meta>
    <title>Page Title</title>
    <meta>
    <div>
        search: <input>
        <ul>
            <li>
                {{index}} --- {{p.name}} --- {{p.age}}
            </li>
        </ul>
        <button>年龄升序</button>
        <button>年龄降序</button>
        <button>原本顺序</button>
    </div>
    <script></script>
    <script>
        var vm = new Vue({
            el: &#39;#demo&#39;,
            data: {
                searchName: &#39;&#39;,
                /**
                 * 排序种类:
                 *  0 - 原本顺序
                 *  1 - 年龄升序
                 *  2 - 年龄降序
                 */
                orderType: 0,
                persons: [{
                        name: &#39;Tom&#39;,
                        age: 18
                    },
                    {
                        name: &#39;Jack&#39;,
                        age: 20
                    },
                    {
                        name: &#39;Bob&#39;,
                        age: 16
                    },
                    {
                        name: &#39;Kaka&#39;,
                        age: 25
                    },
                    {
                        name: &#39;22&#39;,
                        age: 23
                    },
                    {
                        name: &#39;33&#39;,
                        age: 18
                    },
                    {
                        name: &#39;Shadow&#39;,
                        age: 21
                    },
                    {
                        name: &#39;Good&#39;,
                        age: 18
                    },
                    {
                        name: &#39;Lily&#39;,
                        age: 20
                    },
                    {
                        name: &#39;Lena&#39;,
                        age: 19
                    }
                ]
            },
            computed: {
                filterPersons() {
                    // 取出相关的数据
                    const {
                        searchName,
                        persons,
                        orderType
                    } = this;

                    let flag;
                    flag = persons.filter(p => p.name.indexOf(searchName) !== -1);

                    if (orderType !== 0) {
                        flag.sort(function (p1, p2) {
                            if (orderType === 2) {
                                return p2.age - p1.age;
                            } else {
                                return p1.age - p2.age;
                            }
                        });
                    }

                    return flag;
                }
            },
            methods: {
                setOrderType(orderType) {
                    this.orderType = orderType;
                }
            }
        });
    </script>
登录后复制

在这堆代码中的filterPerson函数的第一行进行了this的赋值,创建了一个对象赋给了一个常量
在一些教程中表示这是取出要用的数据
其实算是简化操作,因为后面我将其注释掉,然后在每个变量前面加上this依旧可以跑起来

computed: {
                filterPersons() {
                    // 取出相关的数据
                    // const {
                    //     searchName,
                    //     persons,
                    //     orderType
                    // } = this;

                    let flag;
                    flag = this.persons.filter(p =&gt; p.name.indexOf(this.searchName) !== -1);

                    if (this.orderType !== 0) {
                        flag.sort(function (p1, p2) {
                            if (this.orderType === 2) {
                                return p2.age - p1.age;
                            } else {
                                return p1.age - p2.age;
                            }
                        });
                    }

                    return flag;
                }
            }
登录后复制

所以,在这个地方是将要用的数据事先放在了this中, 主要是函数中本身没有这几个变量,所以直接在函数内部使用是会报错的,因此需要去外面的vue实例中获取。如果不这么做,要多写很多个this。

以上就是vue列表排序实现中的this问题的详细介绍(代码示例)的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
相关标签:
来源:segmentfault网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号