Vue数据过滤与this指向的问题

简介: Vue数据过滤与this指向的问题

实例代码


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/axios@0.24.0/dist/axios.js"></script>
</head>

<body>
    <div id="app">
        <div v-for="item in songs" :key="item.id">
            {{item.name}}========={{item.name|demoFn}}
        </div>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {
                songs: []
            },
            created() {
                this.getSongInfo();
            },
            //过滤要写在filters里!!不能写在methods里
            filters: {
                demoFn(data) {
                    if (data == "光年之外") {
                        return "原本是光年之外的,都被替换啦";
                    }
                    return data;
                }
            },
            methods: {
                getSongInfo() {
                    let url = "https://autumnfish.cn/search?keywords=光年之外";
                    // 注意注意!!!!,axios内部的this指向与这里的this指向不同,所以需在这转存一次.
                    let that = this;
                    console.log("axios外部的this",this);
                    axios.get(url).then(function (res) {
                        console.log("axios内部的this",this);
                        that.songs = res.data.result.songs;
                        for(i in that.songs){
                            //i 为键 ,再根据键获取值
                            console.log(i,that.songs[i]);
                        }
                    })
                }
            }
        })
    </script>
</body>
</html>


数据过滤形式


前为待过滤的数据, “|” 后的为定义过滤规则的函数,以什么方式过滤

{{item.name|demoFn}}

data形参为 待过滤的数据 item.name 传递过来的值.

//过滤要写在filters里!!不能写在methods里
            filters: {
                demoFn(data) {
                    if (data == "光年之外") {
                        return "原本是光年之外的,都被替换啦";
                    }
                    return data;
                }
            },


效果


this指向


 getSongInfo() {
                    let url = "https://autumnfish.cn/search?keywords=光年之外";
                    // 注意注意!!!!,axios内部的this指向与这里的this指向不同,所以需在这转存一次.
                    let that = this;
                    console.log("axios外部的this",this);
                    axios.get(url).then(function (res) {
                        console.log("axios内部的this",this);
                        that.songs = res.data.result.songs;
                        for(i in that.songs){
                            //i 为键 ,再根据键获取值
                            console.log(i,that.songs[i]);
                        }
                    })
                }


控制台

  • 可以看到 外部this指向的是 Vue对象
  • 内部 this ,指向的是 window对象
  • 所以在内部赋值时不能直接使用 this,需要在外转存一次this.


前端CDN网站

https://www.jsdelivr.com/ 许多官方比如Vue官网,axios官网,都使用的这个 ,

开发环境 使用 不带有 min的版本,带有命令行提示报错,方便排错.

国内的https://www.bootcdn.cn/


https://cdnjs.com/


相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
27天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
21天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
126 64
|
28天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
32 1
vue学习第一章
|
28天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
26 1
vue学习第三章
|
28天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
22 1
|
25天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
28天前
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的