1. 程式人生 > >Vue.js實戰學習-Vue.js理解及資料繫結

Vue.js實戰學習-Vue.js理解及資料繫結

1.Vue.js是什麼?

    Vue.js是一個漸進式的javaScript框架,在專案中,可以選擇從不同的維度去使用它。

2.使用的模式:

    MVVM模式:Model-View-ViewModel,當View(檢視層)變化時,會自動更新到ViewModel(檢視模型),反之亦然。View和ViewModel之間通過雙向繫結(data-binding)建立聯絡。

                              

3.el是什麼?

     el用於指定一個頁面中已存在的DOM元素來掛載Vue例項,它可以是HTMLElement,也可以是CSS選擇器。

4.Vue的生命週期:

     created   例項建立完成後呼叫,此階段完成了資料的觀測等,但尚未掛載,$el還不可用。需要初始化處理一些資料時會比較有用。

     mounted  el掛載到例項上後呼叫,一般我們的第一個業務邏輯會在這裡開始。

     beforeDestroy  例項銷燬之前呼叫。主要解綁一些使用addEventListener監聽的事件等。

     這些鉤子與el和data類似,也是作為選項寫入Vue例項內,並且鉤子的this指向的是呼叫它的Vue例項:

      var app = new Vue({
        el:'#app',
        data: {
          name: ''
        },
        created:function (){
          console.log(this.name); //name 的值
        },
        mounted:function () {
          console.log(this.$el); // <div id="app"></div>
        }

5. 插值與表示式

     使用雙大括號(Mustache語法) “{{ }}” 是最基本的文字插值方法,它會自動將我們雙向繫結的資料實時顯示出來,示例如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>插值與表示式示例</title>
  </head>
  <body>
    <div id="app">
      {{ date }}
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          date:new Date()
        },
        mounted:function () {
          var _this = this;//宣告一個變數指向Vue例項this,保證作用域一致
          this.timer = setInterval(function () {
            _this.date = new Date();  //修改資料date
          }, 1000);
        },
        beforeDestory:function () {
          if (this.timer) {
            clearInterval(this.timer);  //在Vue例項銷燬前,清除我們的定時器
          }
        }
      })
    </script>
  </body>
</html>

    在{{ }}中,除了簡單的繫結屬性值外,還可以使用JavaScript表示式進行簡單的運算、三元運算等,示例如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>{{}}的其他使用</title>
  </head>
  <body>
    <div id="app">
      {{ number / 10 }}
      {{ isOK ? '確定' : '取消' }}
      {{ text.split(',').reverse().join(',') }}
    </div>
    <script>
      var app = new Vue({
        el: '#app',
        data: {
          number: 100,
          isOK: false,
          text: '123,456'
        }
      })
    </script>
  </body>
</html>

   顯示結果依次為: 10、取消、456,123。

   Vue.js只支援單個表示式,不支援語句和流控制。

6.  過濾器

    Vue.js支援在{{ }}插值的尾部新增一個管道符“(|)”對資料進行過濾,經常用於格式化文字,比如字母全部大寫、貨幣千位使用逗號分隔等。

    過濾器也可以串聯,而且可以接收引數,如:

    <!-- 串聯 -->

   {{ message | filterA | filterB }}

   <!-- 接收引數 -->

    {{ message | filterA('arg1', 'arg2') }}

7.語法糖

   Vue.js的v-bind和v-on指令提供了語法糖,也就是它們的縮寫,如:

v-bind可以直接寫一個冒號":"
<a v-bind:href="url">連結</a>
<img v-bind:src="imgUrl">
<!-- 縮寫為 -->
<a :href="url">連結</a>
<img :src="imgUrl">

v-on可以直接用"@"來縮寫:
<button v-on:click="handleClose">點選隱藏</button>
<!-- 縮寫為 -->
<button @click="handleClose">點選隱藏</button>