2017-03-16 83 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屬性。