vue骚操作之this.$options(个人笔记)

一、过滤器不能通过this来复用?不存在的

过滤器被用于一些常见的文本格式化,被添加在表达式的尾部,由“管道”符号指示。

<div>{{ text | capitalize }}</div>
export default {
    data() {
        return {
            text: 'hello'
        }  
    },
    filters: {
        capitalize: function (value) {
            if (!value) return ''
            value = value.toString()
            return value.charAt(0).toUpperCase() + value.slice(1)
         }
    }
}

试想一个场景,不仅模板内用到这个函数,在 method 里也需要同样功能的函数。但过滤器无法通过 this 直接引用,难道要在 methods 再定义一个同样的函数吗?

要知道,选项配置都会被存储在实例的 $options 中,所以只需要获取 this.$options.filters就可以拿到实例中的过滤器。豁然开朗.jpg

export default {
    methods: {
        getDetail() {
            this.$api.getDetail({
                id: this.id
            }).then(res => {
                let capitalize = this.$options.filters.capitalize
                this.title = capitalize(res.data.title)
            })
        }
    }
}

除了能获取到实例的过滤器外,还能获取到全局的过滤器,因为 this.$options.filters 会顺着 proto 向上查找,全局过滤器就存在原型中。

重置data中的数据? 一键搞定

在vue单文件组件里有时需要重置data中的数据,比如表单填写一半,用户想重新填写。

<script>
    export default {
        data() {
            return {
                // 表单
                form: {
                    input: ''
                }
            }
        },
        methods: {
            // 重置表单方法
            retset() {
                this.form = this.$options.data().form;
            }
        },
    }
</script>

也可以通过给组件 $data 对象赋值来重置来重置整个 $data

this.$data = this.$options.data();

本文参考:过滤器复用
vue骚操作之this.$options.data()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Vue Vue是一个前端js框架,由尤雨溪开发,是个人项目 Vue近几年来特别的受关注,三年前的时候angular...
    hcySam阅读 2,383评论 0 0
  • View层 ---> html标签 | Model层 ---> data数据 一.v-for: 1.数组:...
    韩娜爱吃辣_前端程序媛阅读 4,453评论 4 1
  • 这个问题是在下在做一个 Vue 项目中遇到的实际场景,这里记录一下我遇到问题之后的思考和最后怎么解决的(老年程序员...
    前端js阅读 3,959评论 0 0
  • vue笔记 一.vue实例 vue的生命周期 beforeCreate(创建前), created(创建后), b...
    秋殇1002阅读 4,700评论 0 1
  • 基本格式 以json的形式、将数据(支持所有格式)挂载在vue的data上、方法挂载在vue的methods上。 ...
    kirito_song阅读 4,294评论 0 21

友情链接更多精彩内容