2015-11-10 108 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, '.') 
})