Javascript 如何在Vue类组件中定义过滤器?

Javascript 如何在Vue类组件中定义过滤器?,javascript,typescript,vue.js,vuejs2,Javascript,Typescript,Vue.js,Vuejs2,Vue类组件是编写单文件组件的一种相对较新的方法。看起来是这样的: 从“Vue”导入Vue 从“vue类组件”导入组件 //@Component decorator表示该类是Vue组件 @组成部分({ //此处允许所有组件选项 模板:“单击!” }) 导出默认类MyComponent扩展Vue{ //初始数据可以声明为实例属性 消息:string='Hello!' //组件方法可以声明为实例方法 onClick():void{ window.alert(this.message) } } 以下

Vue类组件是编写单文件组件的一种相对较新的方法。看起来是这样的:

从“Vue”导入Vue
从“vue类组件”导入组件
//@Component decorator表示该类是Vue组件
@组成部分({
//此处允许所有组件选项
模板:“单击!”
})
导出默认类MyComponent扩展Vue{
//初始数据可以声明为实例属性
消息:string='Hello!'
//组件方法可以声明为实例方法
onClick():void{
window.alert(this.message)
}
}
以下是对它的一些参考:

但是,这些都没有解释如何用这种语法编写过滤器。如果我在模板中尝试以下代码:

{{ output | stringify }}
然后尝试将筛选器作为类方法编写,例如:

@组件
导出默认类HelloWorld扩展Vue{
//…其他事情
stringify(材料:任何){
返回JSON.stringify(stuff,null,2);
}    
}
我得到以下错误:


用这种新语法添加过滤器的正确方法是什么?

在类组件中,关键是文档中的以下注释(
//此处允许所有组件选项)

// The @Component decorator indicates the class is a Vue component
@Component({
  // All component options are allowed in here
  template: '<button @click="onClick">Click!</button>'
})
根据中的文件:

注:

  • 方法可以直接声明为类成员方法

  • 计算属性可以声明为类属性访问器

  • 初始数据可以声明为类属性(如果使用babel,则需要babel插件转换类属性)

  • 数据、渲染和所有Vue生命周期挂钩也可以直接声明为类成员方法,但不能在实例本身上调用它们。声明自定义方法时,应避免使用这些保留名称

  • 对于所有其他选项,将它们传递给decorator函数


  • 我也试着用
    computed
    来做这件事,但是typechecker不喜欢这样:当我试图访问
    这个
    导出默认类栏的
    时,它说
    属性'foo
    在类型Vue'上不存在。有什么建议吗?@AndrewMao,请阅读下面的“备注:”1。方法可以直接声明为类成员方法。2.计算属性可以声明为类属性访问器。3.初始数据可以声明为类属性,4。数据、渲染和所有Vue生命周期挂钩也可以直接声明为类成员方法,但不能在实例本身上调用它们。声明自定义方法时,应避免使用这些保留名称。5.对于所有其他选项,请将它们传递给decorator函数。您可以在中共享该示例吗?
    @Component({
      // other options
      filters: {
        capitalize: function (value) {
          if (!value) return ''
          value = value.toString()
          return value.charAt(0).toUpperCase() + value.slice(1)
        }
      }
    })