1. 程式人生 > >15.Vue元件中的data

15.Vue元件中的data

1.元件中展示資料和響應事件:

// 1. 元件可以有自己的 data 資料
// 2. 元件的 data 和 例項的 data 有點不一樣,例項中的 data 可以為一個物件
// 3. 但是元件中的 data 必須是一個方法 data: function(){}或者data(){}
// 4. 元件中的 data 除了必須為一個方法之外,這個方法內部,還必須返回一個物件才行;
// 5. 元件中 的data 資料使用方式,和例項中的 data 使用方式完全一樣!

程式碼例項:

<!DOCTYPE html>
<html lang="en">
<head
> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./lib/vue-2.4.0.js"></script> </head> <body> <div
id="app"> <mycom1></mycom1> </div> <script> // 1. 元件可以有自己的 data 資料 // 2. 元件的 data 和 例項的 data 有點不一樣,例項中的 data 可以為一個物件 // 3. 但是元件中的 data 必須是一個方法 data: function(){}或者data(){} // 4. 元件中的 data 除了必須為一個方法之外,這個方法內部,還必須返回一個物件才行; // 5. 元件中 的data 資料使用方式,和例項中的 data 使用方式完全一樣!!!
Vue.component('mycom1', { template: '<h1>這是全域性元件 --- {{msg}}</h1>', data: function () { return { msg: '這是元件的中data定義的資料' } } }) // 建立 Vue 例項,得到 ViewModel var vm = new Vue({ el: '#app', data: {}, methods: {} }); </script> </body> </html>
View Code

 注意:

Vue.component('mycom1', {
      template: '<h1>這是全域性元件 --- {{msg}}</h1>',
      data: function () {
        return {
          msg: '這是元件的中data定義的資料'
        }
      }
})

注意:元件中的 data 必須是一個方法 data: function(){}或者data(){},這個方法內部,還必須返回一個物件才行:

為什麼?

例項:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./lib/vue-2.4.0.js"></script>
</head>

<body>
  <div id="app">
    <counter></counter>
    <hr>
    <counter></counter>
    <hr>
    <counter></counter>
  </div>

  <template id="tmpl">
    <div>
      <input type="button" value="+1" @click="increment">
      <h3>{{count}}</h3>
    </div>
  </template>

  <script>
    var dataObj = { count: 0 }
    // 這是一個計數器的元件,身上有個按鈕,每當點選按鈕,讓 data 中的 count 值 +1
    Vue.component('counter', {
      template: '#tmpl',
      data: function () {
        // return dataObj:表示每個元件中data資料共享
        return { count: 0 }   //私有
      },
      methods: {
        increment() {
          this.count++
        }
      }
    })

    // 建立 Vue 例項,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {},
      methods: {}
    });
  </script>
</body>
</html>
View Code

Vue元件中的method,見上面程式碼