[Перевод] 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. Сокращённая запись этой директивы выглядит как двоеточие (:).
Если вы проходите этот курс — просим вас рассказать о том, какую среду вы используете для выполнения домашних заданий.
