Для распространённых задач форматирования текста во Vue используются фильтры. Они находят своё применение в двух местах: в mustache-интерполяциях и в выражениях v-bind. Фильтры добавляются в конце выражения JavaScript и отделяются вертикальной чертой:
<!-- mustache -->
{{ message | capitalize }}
<!-- v-bind -->
<div v-bind:id="rawId | formatId"></div>
Вы можете определить локальные фильтры в опциях компонента:
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
или определить фильтр глобально:
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
Функция фильтра всегда принимает значение выражения (результат предыдущей цепочки) в качестве первого аргумента. В этом примере функция фильтра capitalize получит значение message в качестве аргумента.
Фильтры можно объединять в цепочки:
{{ message | filterA | filterB }}
В этом случае filterA, определённый с одним аргументом, получит значение message, а затем функция filterB будет вызвана с результатом filterA, переданным единственным аргументов в filterB.
Фильтры являются JavaScript-функциями, и потому могут принимать параметры:
{{ message | filterA('arg1', arg2) }}
В данном случае filterA определяется как функция с тремя аргументами. Значение message будет передано первым аргументом. Простая строка 'arg1' будет передана в filterA вторым аргументом, а значение выражения arg2 — третьим.
0 комментариев