2015-11-10 106 views
10

說我有一個Vue的情況下,像這樣的內部:在Vue的JS,從方法調用過濾器VUE實例

new Vue({ 
    el: '#app', 

    data: { 
     word: 'foo', 
    }, 

    filters: { 
     capitalize: function(text) { 
      return text.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); }); 
     } 
    }, 

    methods: { 
     sendData: function() { 
      var payload = this.$filters.capitalize(this.word); // how? 
     } 
    } 
} 

我可以輕鬆地使用過濾器在模板中像這樣:

<span>The word is {{ word | capitalize }}</span> 

但是,我怎樣才能使用此過濾器內的實例方法或計算屬性? (顯然這個例子很簡單,我的實際過濾器更復雜)。

回答

0

爲了配合莫里斯的答案,這是一個文件,我通常用它來把過濾器裏面的例子,你可以使用這種方法的任何視圖中使用。

var Vue = window.Vue 
var moment = window.moment 

Vue.filter('fecha', value => { 
    return moment.utc(value).local().format('DD MMM YY h:mm A') 
}) 

Vue.filter('ago', value => { 
    return moment.utc(value).local().fromNow() 
}) 

Vue.filter('number', value => { 
    const val = (value/1).toFixed(2).replace('.', ',') 
    return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') 
}) 
Vue.filter('size', value => { 
    const val = (value/1).toFixed(0).replace('.', ',') 
    return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') 
})