Javascript 在Vue JS中,从Vue实例内的方法调用筛选器,但$options未定义

Javascript 在Vue JS中,从Vue实例内的方法调用筛选器,但$options未定义,javascript,vue.js,undefined,Javascript,Vue.js,Undefined,我已经看到了符合我问题的答案: 现在把它放在一边,当你做 console.log(this.$options) 我的未定义,因此无法对其调用过滤器。。 这是我的代码: methods:{ style:(input)=>{ return { backgroundColor:this.$options.filters.color(input), } } }, filters: { color: function (va

我已经看到了符合我问题的答案:

现在把它放在一边,当你做

console.log(this.$options)
我的
未定义
,因此无法对其调用
过滤器。。
这是我的代码:

 methods:{
    style:(input)=>{
      return {
        backgroundColor:this.$options.filters.color(input),
      }
    }
  },
  filters: {
    color: function (value) {
      console.log(color(value));
      if (!value) return ''
      return `rgb(${value},${value},${value})`
    }
  }

Error in render: "TypeError: Cannot read property 'filters' of undefined"

您正在使用样式方法的箭头函数。应该是:

style(input) {
    return {
        backgroundColor:this.$options.filters.color(input),
    }
}
如果您没有在过滤器中使用
,则可以在外部提取它,如:

function color (value) {
    console.log(color(value));
    if (!value) return ''
    return `rgb(${value},${value},${value})`
}

methods: {
    style(input) {
        return {
            backgroundColor: color(input),
        }
    }
},
filters: { color }

您可以在方法中编写此函数

methods:{
    style:(input)=>{
      return {
        backgroundColor:this.color(input),
      }
    },
    color: (value) {
      console.log(color(value));
      if (!value) return ''
        return `rgb(${value},${value},${value})`
      }
  }

我想可能是你的箭头功能吧!更改
style:function(input){}
怎么样你完全正确,最后解决了,谢谢!第一部分是正确的答案,即使第二种编码方式也有意义,谢谢!