Я вижу, что вы пытаетесь сделать, однако из-за двухстороннего связывания при использовании v-модели лучше будет просто применить фильтр getUppercase
при отображении.
Ваш шаблонбудет выглядеть примерно так:
<template>
<div class="wrapper">
Check if fruit exist: <input v-model="filterText">
<ul v-for="fruit in filteredFruits">
<li> {{ fruit | getUppercase}} </li>
</ul>
</div>
</template>
Но если вы все еще хотите преобразовать значение модели filterText
, вы можете использовать директиву.В этом случае ваш код VueJS будет выглядеть примерно так:
Vue.directive('getUppercase', {
twoWay: true, // this transformation applies back to the filterText
bind: function () {
var self = this;
self.handler = function () {
self.set(self.el.value.toUpperCase());
}
self.el.addEventListener('input', self.handler);
},
unbind: function () {
this.el.removeEventListener('input', this.handler);
}
});
Теперь используйте эту директиву в вашем шаблоне, например:
<input v-model="filterText" v-get-uppercase="filterText">
Она будет делать то же самое, что и <input v-model="filterText | getUppercase">