iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Modern Web

淺入淺出 Rails with Vue系列 第 3

【Day 03】淺入淺出 Rails with Vue - Vue 的基本概念 - 2

  • 分享至 

  • xImage
  •  

前言

本系列將介紹 Rails with Vue 的基本概念,並且以一個簡單的專案 Todo 來說明如何使用 Rails with Vue。我將透過這一系列的文章記錄我學習的過程,並且將我所學到的知識分享給大家。


Event Handling

Vue 也可以使用 v-on 來做事件處理,如下面的範例中,當按下按鈕時,會執行 reverseMessage 這個函式,並將 message 的值反轉。

<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">Reverse Message</button>
</div>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Hello Vue.js!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})

Bang! 看到沒有,網頁上的字樣已經改變了,這就是 Reactive

Handling User Input

Vue 也可以使用 v-model 來做使用者輸入的處理,如下面的範例中,當使用者輸入文字時,會將輸入的文字顯示在網頁上。

<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})

v-model 會將輸入的值綁定到 data 中的 message,所以當輸入的值改變時,網頁上的文字也會跟著改變。

Composing with Components

Vue 也可以使用 component 來做元件的處理,如下面的範例中,我們將 todo-item 這個元件放在 app 這個元件中,並且將 todo-itemtodo 屬性設定為 appgroceryList 這個陣列元素,像這種方式我們稱之為 prop

<div id="app-7">
  <ol>
    <!--
      Now we provide each todo-item with the todo object
      it's representing, so that its content can be dynamic.
      We also need to provide each component with a "key",
      which will be explained later.
    -->
    <todo-item
      v-for="item in groceryList"
      v-bind:todo="item"
      v-bind:key="item.id"
    ></todo-item>
  </ol>
</div>
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})

var app7 = new Vue({
  el: '#app-7',
  data: {
    groceryList: [
      { id: 0, text: 'Vegetables' },
      { id: 1, text: 'Cheese' },
      { id: 2, text: 'Whatever else humans are supposed to eat' }
    ]
  }
})

像這種元件組合的方式,我們稱之為 Component Composition,往往在大型專案中會使用到,透過這種方式,我們可以將一個大的元件拆分成多個小的元件,並且透過這種方式來組合,這樣可以讓我們的專案更加的清楚,也更加的好維護,也稱作是 Decoupling

Reference


上一篇
【Day 02】淺入淺出 Rails with Vue - Vue 的基本概念 - 1
下一篇
【Day 04】淺入淺出 Rails with Vue - Vue 的基本概念 - 3
系列文
淺入淺出 Rails with Vue30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言