在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义

Posted

技术标签:

【中文标题】在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义【英文标题】:In Vue JS, call a filter from a method inside the vue instance but $options is undefined 【发布时间】:2018-12-31 18:03:52 【问题描述】:

我已经看到了适合我的问题的答案:In Vue JS, call a filter from a method inside the vue instance

现在不碍事,做的时候

console.log(this.$options)

我收到了undefined,所以我不能打电话给filters。 这是我的代码:

 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: function(input) 怎么样 你说的很对,最后弄明白了,谢谢! 【参考方案1】:

您正在为样式方法使用箭头功能。应该是:

style(input) 
    return 
        backgroundColor:this.$options.filters.color(input),
    

如果您没有在过滤器中使用this,那么您可以将其提取到外部,例如:

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


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

【讨论】:

第一部分是正确的答案,即使第二种编码方式也有意义谢谢!【参考方案2】:

你可以在方法中编写这个函数

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

【讨论】:

以上是关于在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义的主要内容,如果未能解决你的问题,请参考以下文章

从 Vue.js 中的另一个组件调用方法

如何从视图中调用组件中的方法? (vue.js 2)

如何通过vue实例调用单独的JS文件中的函数[重复]

vue.js 生命周期

vue.js 生命周期

vue2.0 关于Vue实例的生命周期