iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
1
Modern Web

學習 vue 30天系列 第 5

Vue 05 雙向綁定的資料

  • 分享至 

  • xImage
  •  

這裡我們先了大概了解 MVVM 這個東東是什麼概念,明天會詳細的做學習。

我們看到 vue 文件裡有提到 vue 其實不完全是 MVVM 的架構,它只是受到 MVVM 的啟發,那 MVVM 是有哪些單字組成呢?

M 指的是 Model、V 指的是 View、VM 指的是 ViewModel,各個意思可以先到 wiki 去看,明天在詳細的了解他。

我們可以看 wiki 上這麼說,MVVM 是一個軟體架構模式,我們可以看一下他裡面的圖:
mvvm 圖

好我們現在回到怎麼透過 vue 來做這樣的自動綁定,這個時候我們先建裡好新的 vue 應用程式:

<div id="app">
    {{ message }} //兩個大括號這個語法在 Vue 文件裡面叫 Mustache 語法
    <input type="text">
</div>

<script>
    let app = new Vue({
        el: "#app",
        
        data:{
            message: "早安" //這一段的 “早安” 就是我們剛提到的 model
        }
    });
</script>

這個時候我們看畫面及開發者工具上

https://ithelp.ithome.com.tw/upload/images/20190828/20109609l52SgMIyvZ.png

但這個時候你在輸入裡面一些東西還不會改變我們的 message,那接下來我們就是要透過這個 input 來調整 message 資料。

這邊我們先學三個 Vue 的指令,v-modelv-textv-html

v-model

v-model 就是我們剛剛提到的 model,那這個 v-model 裡面的 message 就是我們對應到應用程式裡 data 的 message ,藉有此方式來直接調整我們 model 的資料內容。

<div id="app">
    {{ message }}
    <input type="text" v-model="message">
</div>

<script>
    let app = new Vue({
        el: "#app",
        
        data:{
            message: "早安" //這一段的 “早安” 就是我們剛提到的 model
        }
    });
</script>

它資料的更新是即時的,我們一更改,視圖的資料也會隨之改變。

v-text

這個的也會呈現文字在畫面上,那主要的差別就是v-text會把 message 插到 div 裡面。

我們可以看到用 v-text 會多一個 div,跟一開始的 Mustache 語法({{ message }} )呈現的方式不太依樣。
https://ithelp.ithome.com.tw/upload/images/20190828/20109609OiqfFqulSZ.png

<div id="app">
    {{ message }}
    <div v-text="message"></div>
    <input type="text" v-model="message">
</div>

<script>
    let app = new Vue({
        el: "#app",
        
        data:{
            message: "早安"
        }
    });
</script>

v-html

v-htmlv-text 很像,但比較不一樣的是 v-html 可以插入新的 html 標籤,這邊的 v-html 是可以輸標籤的,可以藉由 {{ message }} 來看出不同處,我們在 data 裡面的 message 加入個 <em> v-html 可以輸出成標籤而 {{ message }} 就無法輸出成 html。

https://ithelp.ithome.com.tw/upload/images/20190828/201096092xQJZS3Ao4.png

<div id="app">
    {{ message }}
    <div v-html="message"></div>
    <input type="text" v-model="message">
</div>

<script>
    let app = new Vue({
        el: "#app",
        
        data:{
            message: "<em>早安</em>"
        }
    });
</script>

上一篇
Vue 04 應用程式建立
下一篇
Vue 06 MVVM 的概念
系列文
學習 vue 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言