Java程序員入門Vue基礎之數據綁定與計算屬性(二)

1. 數據綁定

數據綁定是講數據和視圖相關聯,當數據發生變化時,可以自動更新視圖。

  • 插入值

文本插入值是最基本使用方式,我們在vue渲染的組件中使用{{message }} 然後將vue的data中設置messaged的值,代碼如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>template</title>
</head>
<body>
  <div id="app">
      <input type="text" v-model="message">
        <p>
            {{message}}
        </p>
  </div>  
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<script>
    let app=new Vue({
        el:'#app',
        data:{
        message:'Trump is so stupid!'
       }
    })
</script>
</html>

例子中的標籤 {{message}} 將會被相應的vue中定義的數據對象message的值替換掉,當輸入框的值進行更改時候,我們發現下面P標籤的{{message}}的值也會動態變化。

  • 表達式

我們可以對{{message}} 進行簡單的表達式運算,例如我們可以將頁面p標籤進行大寫轉換如下所示:
在這裏插入圖片描述頁面展示效果如下所示:
在這裏插入圖片描述

2.計算屬性

通常我們會在模版中綁定表達式,模版是爲了描述視圖中對應的數據。我們可以對錶達式進行計算。當計算屬性對應的值發生改變時候,與之相關的視圖數據也會進行相應的變化。

首先讓我們需要知道的是Vue提供的一個computed方法,我們通過這個方法實現對數據的一些計算操作。下面我們先看一下一個案例效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
   <div id="app">
     A列:  <input type="text" v-model="v1"/>
            {{v1}}</br>
     B列:  <input type="text" v-model="v2"/>
            {{v2}}</br>
     C列:  <input type="text" v-model="v3"/>
            {{v3}}</br>
   </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<script>
    let app = new Vue({
        el:'#app',
        data:{
            v1: 'Donald',
            v2: 'Trump',
        
        },

        computed: {
           v3() {
             return this.v1+" "+this.v2
           }
        },
       
    })

   
</script>
</html>

你可以看到當A列和B列的數據發生變化時候,C列的數據也發生了變化。這裏我們計算了v3的的值,v3()方法相當於model的getter方法。但是當我們對v3的輸入框輸入值時候v1和v2的值沒有任何變化,如果想要實現如下這樣的效果呢?
在這裏插入圖片描述既然我們提供了v3的getter方法,同理我們也可以在computed中爲其設置setter方法。代碼示例如下:

       computed: {
            v3 : {
                get: function() {
                    return  this.v1+" "+this.v2 +" " +Date.now()
                },

                set:function(newval) {
                 let values= newval.split(' ');
                 this.v1=values[0];
                 this.v2=values[1]
                }
          }
        },

運行後我們發現當改變v3的值時候,v1的值或v2的值也相應進行更改,每一次操作時間戳對象都在變化表示:每次getter都是獲取最新的對象值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章