[Перевод] Vue.js для начинающих, урок 2: привязка атрибутов
Вот перевод второго урока учебного курса по Vue.js. Здесь речь пойдёт о привязке атрибутов, о подключении данных, хранящихся в экземпляре Vue, к атрибутам HTML-элементов.
→ Первый урок
Цель урока
Здесь мы разберёмся с тем, как, используя привязку атрибутов, вывести изображение, и задать текст атрибута alt
. Соответствующие данные мы возьмём из экземпляра Vue.
Начальный вариант кода
Начнём работу с такого HTML-кода, находящегося в файле index.html
, в теге :
{{ product }}
Элемент Вот JavaScript-код, содержащийся в файле → Здесь можно найти CSS-код, используемый в этом уроке. Для подключения стиля к Здесь находится изображение, которое мы будем выводить на странице. Другими словами, сущность-источник данных, связана с сущностью, в которой эти данные используются, с приёмником данных. В нашем случае источник данных — это экземпляр Vue, а приёмник — это атрибут А если поменять значение свойства Предположим, нам надо заменить изображение зелёных носков на изображение синих. Для этого, учитывая то, что путь к файлу с новым изображением выглядит как Добавим в объект с опциями Теперь, если в данных экземпляра Vue изменятся свойства Этот приём постоянно используется при разработке Vue-приложений. Из-за этого существует сокращённый вариант записи конструкции → Вот заготовка, которую вы можете использовать для решения этой задачи. → Вот решение задачи.
Обратите внимание на тег product-image
. Именно в нём содержится элемент , к которому мы хотим динамически привязать данные, необходимые для вывода изображения.
product-info
используется для вывода названия товара.
main.js
: var app = new Vue({
el: '#app',
data: {
product: "Socks",
image: "./assets/vmSocks-green.jpg"
}
})
Обратите внимание на то, что в объекте data
теперь имеется новое свойство image
, содержащее путь к изображению.index.html
нужно добавить в тег следующее:
Тут мы исходит из предположения о том, что файл со стилями имеет имя style.css
и хранится в той же папке, что и index.html
.Задача
Нам нужно, чтобы на странице вывелось бы изображение. При этом мы хотим динамически управлять этим изображением. То есть, нам нужна возможность, позволяющая менять путь к изображению, хранящийся в экземпляре Vue, и тут же видеть результаты этих изменений на странице. Так как именно атрибут src
элемента отвечает за то, какое изображение выведет элемент, нам нужно привязать некие данные к этому атрибуту. Это и позволит нам динамически, основываясь на данных, хранящихся в экземпляре Vue, менять изображение.
Важный термин: привязка данных
Когда мы говорим о привязке данных во Vue, смысл этого заключается в том, что место в шаблоне, в котором используются или выводятся данные, напрямую «подключено», или «связано» с источником данных, то есть — с соответствующим объектом, хранящимся в экземпляре Vue.src
элемента .
Решение задачи
Для того чтобы привязать значение свойства image
из объекта с данными к свойству src
тега , мы воспользуемся директивой Vue
v-bind
. Перепишем код тега из файла
index.html
:
Когда Vue, обрабатывая страницу, видит такую конструкцию, фреймворк заменяет её на следующий HTML-код:
Если всё сделано правильно, то на странице будет выведено изображение.
Изображение зелёных носков выведено на страницеimage
объекта data
, то соответствующим образом изменится и значение атрибута src
, что приведёт к выводу на странице нового изображения../assets/vmSocks-blue.jpg
(файл изображения можно найти здесь), достаточно привести код описания свойства image
в объекте data
к такому виду: image: "./assets/vmSocks-blue.jpg"
Это приведёт к тому, что на странице появится изображение синих носков.
Изображение синих носков выведено на страницеДополнительные варианты использования v-bind
Директиву v-bind
можно использовать не только с атрибутом src
. Она может помочь нам и в динамической настройке атрибута изображения alt
.data
новое свойство altText
: altText: "A pair of socks"
Привяжем соответствующие данные к атрибуту alt
, приведя код элемента к такому виду:
Здесь, как и в случае с атрибутом src
, используется конструкция, состоящая из v-bind
, двоеточия и имени атрибута (alt
).image
или altText
, в соответствующие атрибуты элемента попадут обновлённые данные. При этом связь атрибутов элемента и данных, хранящихся в экземпляре Vue, не нарушится.
v-bind:имяатрибута
. Он выглядит как :имяатрибута
. Если использовать этот приём при написании кода тега , то получится следующее:
Это просто и удобно. Данный приём улучшает чистоту кода.Практикум
Добавьте на страницу ссылку (элемент ) с текстом
More products like this
. В объекте data
создайте свойство link
, содержащее ссылку https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=socks
. Свяжите, используя директиву v-bind
, свойство link
с атрибутом href
элемента .
Итоги
Вот что мы сегодня изучили: v-bind
. Сокращённая запись этой директивы выглядит как двоеточие (:
).
Если вы проходите этот курс — просим вас рассказать о том, какую среду вы используете для выполнения домашних заданий.