Vue入門到放棄20(Vue的data和methods屬性)

1. 組件可以有自己的 data 數據
2. 組件的 data 和 實例的 data 有點不一樣,實例中的 data 可以爲一個對象,但是 組件中的 data 必須是一個方法
3. 組件中的 data 除了必須爲一個方法之外,這個方法內部,還必須返回一個對象纔行;
4. 組件中 的data 數據,使用方式,和實例中的 data 使用方式完全一樣!!!

<body>
  <div id="app">
    <mycom1></mycom1>
  </div>
  <script>
    // 1. 組件可以有自己的 data 數據
    // 2. 組件的 data 和 實例的 data 有點不一樣,實例中的 data 可以爲一個對象,但是 組件中的 data 必須是一個方法
    // 3. 組件中的 data 除了必須爲一個方法之外,這個方法內部,還必須返回一個對象纔行;
    // 4. 組件中 的data 數據,使用方式,和實例中的 data 使用方式完全一樣!!!
    Vue.component('mycom1', {
      template: '<h1>這是全局組件 --- {{msg}}</h1>',
      data: function () {
        return {
          msg: '這是組件的中data定義的數據'
        }
      }
    })
    // 創建 Vue 實例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {}
    });
  </script>
</body>

methods屬性的使用

  在Vue組件中我們也可以通過methods屬性來定義組件自身的方法來供組件使用,和Vue實例中的methods的使用差不多,如下。

<body>
  <div id="app">   
    <mycom1></mycom1>
  </div>
  <script>
    Vue.component('mycom1', {
      template: '<h1>這是全局組件 --- {{msg}}<input type="button" value="調用組件中的show方法" @click="show"></h1>',
      data: function () {
        return {
          msg: '這是組件的中data定義的數據'
        };
      },
      methods:{
        show(){//組件內部定義的show方法
          console.log('我是組件中是show方法...');
        }
      }
    })
    // 創建 Vue 實例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {},
      methods:{}
    });
  </script>
</body>

效果:(這個按鈕必須放在組件中間)

 

data屬性必須返回對象

  在這裏大家需要搞 組件 和 Vue實例的區別,Vue實例是在頁面加載的時候被實例化的,一個頁面就一個,而 組件是可以複用的.也就是在一個頁面中可以同一個組件可以有多個實例。如下案例

<body>
  <div id="app">
    <!--複用3個 Vue 組件-->
    <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
        //return { count: 0 }
      },
      methods: {
        increment() {
          this.count++
        }
      }
    })
    // 創建 Vue 實例,得到 ViewModel
    var vm = new Vue({
      el: '#app',
      data: {},
      methods: {}
    });
  </script>
</body>

複用3個組件,效果:

修改:

效果:

game over....... 

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