Vue的全局filters

我在Vue的入口js写全局过滤器的逻辑,看了官方的案例是Vue.filter()全局注册的函数,我想换种写法,用mixins 方式

这种方式我试了在单个的组件页面把filter函数放在mixins里面是可行的,但是放在入口文件这里没起到作用?这是为什么??全局的混入不是在每个页面都可以访问吗?

main.js

const mixins = {    
    filters: {             
        mixin_fixed2 (val) {            
            return val.toFixed(2);   
        }
    },
    created(){
        console.log('chengg')
    }   
}

new Vue({
  el: '#app',
  router,
  mixins:[mixins],
  template: '<App/>',
  components: { App }
})

这种写法我在其他的组件页面使用这个mixin_fixed2 过滤器是报错的。。

我把这段逻辑放在单个的组件页面

import mixins from '@/plugins/mixins.js'

export default {
  mixins:[mixins]
}

这里是没问题的

阅读 2.8k
1 个回答

mixins只对当前组件有作用,也就是你在根组件注入mixins只有根组件能调用注入的filters,并不会向下级组件渗透

你可以试下全局 Vue.mixin()

我并不建议这么做,应该让合适的方法做合适的事情,直接用filter未来回头再看代码不容易产生疑虑,而你这样混在mixin里面用以后如果想排查个filter还得想想自己是否定义在了mixin里面,很不规范

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题