Я изучаю Vue с помощью онлайн-курса, и инструктор дал мне упражнение для ввода текста со значением по умолчанию. Я закончил это, используя v-модель, но преподаватель выбрал v-bind: value, и я не понимаю почему.
Может кто-нибудь дать мне простое объяснение разницы между этими двумя и когда лучше использовать каждый?
javascript
mvvm
frameworks
vue.js
frontend
Густаво Диас
источник
источник
v-model
используется в основном для ввода и назначения ставок, поэтому используйте его, когда вы имеете дело с различными типами ввода.v-bind
Директива позволяет вам получить некоторое динамическое значение, набрав некоторое JS-выражение, которое в большинстве случаев зависит от данных из модели данных - так что думайте о v-bind как о директиве, которую вы должны использовать, когда хотите разобраться с некоторыми динамическими вещами.<div v-bind:class="{ active: isActive }"></div>
- вы не можете связать атрибут html, используя модель, вы должны использоватьv-bind
директиву. Для элементов формы вы захотите использоватьv-model
директиву - «она автоматически выбирает правильный способ обновления элемента на основе типа ввода».data
иprops
...Ответы:
От здесь - Запомнить:
по сути то же самое, что и:
или (сокращенный синтаксис):
Так
v-model
что двусторонняя привязка для ввода формы . Она сочетает в себеv-bind
, что приносит значение Js в разметку, иv-on:input
чтобы обновить Js значения .Используйте,
v-model
когда можете. Используйтеv-bind
/v-on
когда вы должны :-) Я надеюсь, что ваш ответ был принят.v-model
работает со всеми основными типами ввода HTML (текст, текстовое поле, число, радио, флажок, выберите). Вы можете использоватьv-model
с ,input type=date
если ваша модель хранит даты как строки ISO (гггг-мм-дд). Если вы хотите использовать объекты даты в вашей модели (хорошая идея, как только вы собираетесь манипулировать или форматировать их), сделайте это .v-model
есть несколько дополнительных умов, о которых стоит знать. Если вы используете IME (много мобильных клавиатур, или китайская / японская / корейская), v-модель не будет обновляться, пока не будет заполнено слово (введен пробел или пользователь покидает поле).v-input
будет стрелять гораздо чаще.v-model
также имеют модификаторы.lazy
,.trim
,.number
, покрытые в доке .источник
v-model
аv-bind:xxx.sync
?Проще говоря
v-model
, для двухстороннего связывания это означает: если вы измените входное значение, связанные данные будут изменены, и наоборот .но
v-bind:value
называется односторонним связыванием, что означает: вы можете изменить входное значение, изменив связанные данные, но вы не можете изменить связанные данные, изменив входное значение через элемент .посмотрите на этот простой пример: https://jsfiddle.net/gs0kphvc/
источник
this.data_source = 'Some new value'
data_source
, вы имеете в виду HTML впрыскивается в DOM изinput
, не так ли?v-модель -
это двухсторонняя привязка данных, она используется для привязки html-элемента ввода, когда вы меняете входное значение, тогда ограниченные данные будут изменены.
v-модель используется только для элементов ввода HTML
v-bind -
это односторонняя привязка данных. Это означает, что вы можете только привязать данные к элементу ввода, но не можете изменить ограниченные данные, изменяя элемент ввода. v-bind используется для привязки атрибута html,
например:
<input type="text" v-bind:class="abc" v-bind:value="">
источник
Надеюсь, что это поможет вам с базовым пониманием
источник
Есть случаи, когда вы не хотите использовать
v-model
. Если у вас есть два входа, и каждый зависит друг от друга, у вас могут быть циклические проблемы со ссылками. Обычные случаи использования, если вы строите бухгалтерский калькулятор.В этих случаях не рекомендуется использовать наблюдатели или вычисляемые свойства.
Вместо этого возьмите
v-model
и разделите его, как указано выше.На практике, если вы разделяете свою логику таким образом, вы, вероятно, будете вызывать метод.
Вот как это будет выглядеть в сценарии реального мира:
источник