Vue如何从父级调用过滤器

时间:2017-06-29 06:32:22

标签: javascript vue.js vuejs2 vue-component

如何使用单个文件组件调用父级的过滤器。以下是我的代码。

app.js

     func_signature namespace_name::class_name::function_name(){
             /* some code here*/
     }

home.vue

import computed from '../vue/mixins/computed.js';
import filters from '../vue/mixins/filters.js';
import methods from '../vue/mixins/methods.js';

const app = new Vue({
    el: '#app',
    mixins:[
        computed,
        filters,
        methods
    ],
    mounted: function() {

    }
});

它在控制台“无法解析过滤器:大写”

中给我这个警告

2 个答案:

答案 0 :(得分:4)

  • 您应该在使用

    启动根实例之前使过滤器全局可用
    Vue.filter('uppercase', uppercase);
    

    大写可以是一个简单的函数,如

    function uppercase(str)
      return str.uppercase();
    }
    

    这将是在所有vue组件上使用过滤器的最简单可靠的方法;

  • 如果您通过mixins将过滤器导入父母,为什么不在孩子身上使用mixin?

  • 请不要使用this.$parent - 方法,因为它会使您的子组件成为该父组件的静态依赖项。

    • 要使用$parent方法,您可能需要将父级的过滤器函数声明为子级中的过滤器:

      过滤器:{   大写:this。$ parent。$ options.filters.uppercase }

答案 1 :(得分:1)

没有意义。只需将您的混合物包含在孩子身上。理想情况下,组件应该是自治的,并且不知道它在组件层次结构中的位置(至少不是上面的组件或同一级别上的组件。