2017-03-16 52 views
1

我想要像这样访问vue实例数据内部的过滤器函数。 JS: -访问vue实例/数据里面的过滤器方法

new Vue({ 
data:{ 
    amount: 10, 
    exchangeRate:50 
}, 
el:"#app", 
filters:{ 
    currency: function(amount){ 
      console.log(this); 
      //return amount * this.exchangeRate; 
      return amount *50; 

    } 
} 
}) 

HTML:

<div id="app"> 
{{ amount | currency}} 
</div> 

我的目标是使用return amount * this.exchangeRate;this等于window这里。 我该怎么做? 谢谢。 jsfiddle

回答

7

根据埃文,Vue公司的创建者:主要用于触发状态改变

使用方法。当你调用一个方法时,通常意味着一些副作用。

使用过滤器主要用于简单的文本格式,需要在整个应用程序中重复使用。过滤器应该是纯粹的 - 没有副作用,只是数据输入和数据输出。

使用本地特定于组件的数据转换的计算属性。与过滤器类似,计算得到的getter应该是纯粹的。

有一种特殊情况,您希望使用仅在模板中可用的范围变量(例如v-for别名)来计算某些内容,在这种情况下,可以使用“帮助程序方法”以便可以通过传递参数来计算某些内容。

(来源:https://forum-archive.vuejs.org/topic/830/method-vs-computed-vs-filter/2

因此,由于过滤器取决于组件上,我认为你应该在这种情况下,而不是一个过滤器中使用计算的属性。

2

我看到有两个选项,你可以使用方法/计算属性或传递额外的参数来过滤。您不能访问this内部过滤器,作为过滤的目的很简单,比如文本变换等从docs

过滤器主要设计用于文本转换的目的。对于其他指令中更复杂的数据转换,您应该使用Computed属性。