1. 程式人生 > 其它 >VUE(二)——繫結值

VUE(二)——繫結值

學習重點

這一篇主要介紹一下vue中MVVM的特點,也就是研究一下這個特點:改變資料的值,頁面會跟著改變,頁面上的值發生變化,資料也會聯動。

我們要學的就是:

  • Html標籤與資料的繫結;
  • Html標籤與屬性(CSS樣式等)的繫結,;
  • Html標籤與事件(點選事件等)的繫結;
  • 攔截器,給各種繫結設定一個攔截功能(資料需要滿足什麼情況,才需要繫結?)。

值繫結

使用佔位符{{fieldName}},資料會總動填充到頁面上。

使用v-model可以與輸入控制元件(input/select)進行繫結,輸入框內的值發生變化,資料也會發生變化。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 測試例項</title>
    <script src="res/vue.js"></script>
</head>
<body>
<div id="app">
    <!--資料繫結-->
    <p>{{ message1 }} </p>
    <!--類似InnerHTML-->
    <div v-html="message2"></div>
    <!--雙向繫結,輸入框與展示的資料進行聯動,v-model的值影響data中的值,data中的值再影響<p>標籤的值-->
    <input v-model="message1">
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            message1: 'runoob!',
            message2: '<h>123456</h>',
        }
    })
</script>
</body>
</html>

屬性繫結

屬性繫結指的是控制元件自身的屬性,例如<a>標籤的href屬性,使用v-bind進行屬性繫結,簡寫 “:bind”、或者只保留一個 “:”。

後面會發現,其實自定義元件的值,也是通過這種方式進行繫結的。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Vue 測試例項</title>
    <script src="res/vue.js"></script>
</head>
<body>
<div id="app">
    <!--繫結id屬性-->
    <div v-bind:id="rawId"></div>
    <!--繫結href屬性-->
    <a v-bind:href="url">{{name}}</a>
    <!--繫結CSS樣式-->
    <div :style="mystyle">{{name}}</div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            mystyle:'background: #444;color: #eee',
            name: 'baidu',
            url: 'www.baidu.com',
            rawId: 'div_id',
        }
    })
</script>
</body>
</html>

事件繫結

事件和屬性的區別,就是事件是一個Function,而屬性是一個Object。

語法上有所差別,vue需要在methods中定義事件函式,

使用v-on:click繫結點選事件,簡寫@click。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Vue 測試例項</title>
    <script src="res/vue.js"></script>
</head>
<body>
<div id="app">
    <!--點選事件,v-on表示 監聽事件-->
    <button v-on:click="dialog('msg')">Click</button>
    <!--點選事件,v-on表示 監聽事件-->
    <button @click="dialog()">Click</button>
</div>

<script>
    new Vue({
        el: '#app',
        data: {
            message: 'runoob!'
        },
        methods: {
            dialog: function (msg) {
                if (!msg) {
                    alert(this.message);
                } else {
                    alert(msg);
                }
            }
        }
    })
</script>
</body>
</html>

攔截器(filters)

資料繫結之前,對資料計算或者校驗,比如說:數值是百分比,顯示之前,你需要給它增加一個百分號。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Vue 測試例項</title>
    <style>
        .class1 {
            background: #444;
            color: #eee;
        }
    </style>
    <script src="res/vue.js"></script>
</head>
<body>
<div id="app">
    <!--一般的屬性繫結不需要攔截器,需要動態改變樣式可以使用雙向繫結實現-->
    <div :class="{'class1': isShow}">Text</div>
    <div :class="{'class1': true}">Text</div>
    <!--在值繫結中,可以對輸入輸出進一步處理-->
    <input :value="message2 | formatStr"/>
    <span> {{message2 | formatStr}}</span>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            message1: 'msg1',
            message2: 'msg',
            isShow: false
        },
        filters: {
            formatStr: function (value) {
                return value + "%"
            }
        }
    })
</script>
<script>
</script>
</body>
</html>
瘋狂的妞妞 :每一天,做什麼都好,不要什麼都不做……