Да, во Vue (особенно в Vue 2, где фильтры были встроенной функциональностью) можно передавать параметры в фильтры. Рассмотрим различные способы и подходы:
В Vue 2 фильтры могут принимать дополнительные параметры:
Vue.filter('truncate', function(text, length, suffix) {
if (text.length <= length) return text;
return text.substring(0, length) + (suffix || '...');
});
Использование с параметрами:
<p>{{ longText | truncate(100, ' >>>') }}</p>
Можно комбинировать несколько фильтров, каждый со своими параметрами:
<p>{{ price | currency('$') | uppercase }}</p>
Во Vue 3, где нет встроенных фильтров, можно использовать методы с параметрами:
export default {
methods: {
formatDate(date, formatString) {
// реализация форматирования
return formattedDate;
}
}
}
Использование:
<p>{{ formatDate(currentDate, 'DD.MM.YYYY') }}</p>
В Composition API можно создавать переиспользуемые функции с параметрами:
import { computed } from 'vue';
export function useFormatter() {
const truncateText = (text, length = 50) => {
return text.length > length ? text.slice(0, length) + '...' : text;
};
return { truncateText };
}
Использование в компоненте:
const { truncateText } = useFormatter();
const shortText = truncateText(longText, 100);
Можно создавать функции, которые возвращают фильтры с параметрами:
function createCurrencyFilter(currencySymbol) {
return function(value) {
return `${currencySymbol}${value.toFixed(2)}`;
};
}
Vue.filter('currency', createCurrencyFilter('$'));
Параметры могут быть динамическими, основанными на данных компонента:
<input v-model="truncateLength">
<p>{{ longText | truncate(truncateLength) }}</p>
Для множества параметров можно передавать объект:
Vue.filter('format', function(value, options) {
// работа с options.precision, options.currency и т.д.
});
Использование:
<p>{{ amount | format({ currency: 'EUR', precision: 3 }) }}</p>
во Vue 2 можно передавать параметры непосредственно в фильтры через синтаксис пайпов. Во Vue 3 для аналогичной функциональности следует использовать методы или композиционные функции, которые принимают параметры. Параметры могут быть статическими или динамическими, простыми значениями или сложными объектами.