Конечно, я мог бы просто использовать вычисляемую функцию для этого, но в некоторых случаях это невозможно, например, когда вы находитесь внутри v-for
и хотите, чтобы вычисляемое вами ссылалось на переменную итератора цикла.В таких случаях мое решение выглядит следующим образом:
<div :set="text=$v.form.text">
<input
:class="{ error: !text.required }"
v-model.trim="text.$model"
/>
</div>
Для тех, кто сейчас думает: «Эй, я не знал, что в Vue был незарегистрированный :set
», нет .
То, что я делаю здесь, полагается на то, что Vue будет оценивать JavaScript любых связанных атрибутов, и я просто решил изобрести неиспользуемый атрибут с именем :set
.
В качестве напоминаниясвязанный атрибут - это атрибут с префиксом :
или v-bind:
.Выражение JavaScript внутри двойных кавычек будет оцениваться в контексте текущего компонента, а переменная item
будет по-прежнему доступна за пределами v-for
, в котором она устанавливается.Таким образом, это не локальная переменная, как таковая, а локально назначенная переменная области видимости компонента.
Убедитесь, что добавили эту переменную в объявления переменных в хуке данных.
data() { return {
text: ''
}}
Вот ссылка на CodePen, показывающая этот шаблон на работе https://codepen.io/pbastowski/pen/PXqjPG?editors=1100