Dyrektywa v-bind
Dyrektywy w Vue.js to specjalne atrybuty z przedrostkiem v-. Wartością takiej dyrektywy jest wyrażenie JavaScript. Dyrektywy mają za zadanie reaktywne aktualizowanie drzewa DOM zawsze gdy wartość przekazanego wyrażenia się zmieni. Vue udostępnia kilka wbudowanych dyrektyw takich jak v-if, v-for, czy v-bind.
Niektóre dyrektywy przyjmują po dwukropku parametr. Tak właśnie jest w tym przypadku: v-bind:nazwaAtrybutuHtml. Dla przykładu, dynamiczne zbindowanie wartości to atrybutu href możesz osiągnąć za pomocą v-bind:href="nazwaZmiennej" tak, jak w poniższym przykładzie.
new Vue({
  data() {
    return {
      text: 'Type of Web',
      destination: 'https://typeofweb.com/',
    };
  },
}).$mount('#app');
<div id="app">
  <a v-bind:href="destination">{{ text }}</a>
  <br />
  <input v-model="destination" />
</div>
v-bind będziemy później używać również do dynamicznego przekazywania danych do zagnieżdżonych komponentów Vue. Opowiem Ci o tym więcej w jednej z kolejnych lekcji.
Skrócona składnia v-bind
Vue.js w wielu miejscach robi odstępstwa od reguły aby ułatwić użytkownikom życie. Tak właśnie jest w przypadku v-bind. Jak pewnie zauważysz pisząc we Vue.js, jest to bardzo szeroko wykorzystywana dyrektywa. Z tego powodu twórcy frameworka postanowili ułatwić życie programist(k)om i udostępnili dla niej również skrócony zapis.
<div id="app">
  <a :href="destination">{{ text }}</a>
</div>
Powyższy kod jest równoważny temu, czego użyliśmy wcześniej - wystarczy, że nazwę atrybutu poprzedzisz znakiem dwukropka, a zostanie on dynamicznie zbindowany. Zapis taki jest bardzo zwięzły i czytelny, przez co to głównie ta wersja jest wykorzystywana na co dzień.
Bindowanie wielu atrybutów jednocześnie
Czasami będziesz chciał(a) zbindować kilka atrybutów naraz. Możesz w tym celu przekazać dyrektywie v-bind obiekt. Jego klucze zostaną użyte jako nazwy atrybutów, a wartości zostaną odpowiednio zbindowane.
new Vue({
  data() {
    return {
      text: 'Type of Web',
      linkAttrs: {
        href: 'https://typeofweb.com/',
        title: 'Blog o programowaniu',
      },
    };
  },
}).$mount('#app');
<div id="app">
  <a v-bind="linkAttrs">{{ text }}</a>
</div>
Powyższy kod dynamicznie ustawi na linku zarówno atrybut href, jak i title. Jeśli wydaje Ci się to nieco zagmatwane, to nie obawiaj się pytać w komentarzach pod wpisem albo na szkoleniu! zapisz się na szkolenie z Vue.js.
Ćwiczenie
Spróbuj użyć dyrektywy v-bind, aby stworzyć proste narzędzie do sprawdzania jak wygląda obrazek o zadanym URL. Aby to osiągnąć, dynamicznie zbinduj atrybut src tagu <img />. Podziel się swoim rozwiązaniem w komentarzach!
