回覆列表
  • 1 # 寫程式設計師的程式碼

    vue元件和例項的關係Vue是由一個個例項構建而成的,一個元件就是一個Vue的例項,每個元件內部都可以寫屬性,因此每一個元件都是一個Vue的例項。每一個例項都有自己的template模板,如果沒有,根節點就會去掛載點下面找,找到root會把root下面的所有DOM標籤當做這個例項的模板使用。

    <!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>元件與例項的關係</title>

    <script src="./vue.js"></script>

    </head>

    <body>

    <div>

    <div>

    <input v-model="inputValue"/>

    <button @click="handleSubmit">提交</button>

    </div>

    <ul>

    <todo-item

    v-for="(item, index) of list"

    :key="index"

    :content="item"

    ></todo-item>

    </ul>

    </div>

    <script>

    // 定義全域性元件

    Vue.component("todo-item",{

    // 傳參後不能直接使用,必須接收一下才可以使用

    props:["content"],

    // 每一個元件都是一個例項,可以新增事件和屬性

    template: "<li @click="handleClick">{{content}}<li>",

    methods:{

    handleClick: function() {

    alert("clicked")

    }

    }

    })

    new Vue({

    el:"#root",

    data:{

    inputValue:"",

    list:[],

    },

    // 新增事件

    methods:{

    handleSubmit: function(){

    // 將inputValue push到陣列中

    this.list.push(this.inputValue),

    // 清空輸入框

    this.inputValue=""

    }

    }

    })

    </script>

    </body>

    </html>

    區別vue例項會比vue元件多出el和router屬性,而vue元件的data會被要求必須是函式,防止出現同種元件多例項共享同一個data的事情。官網介紹

    不過現在,你只需要明白所有的 Vue 元件都是 Vue 例項,並且接受相同的選項物件 (一些根例項特有的選項除外)。

    從上面可以看出, vue 元件本身是一個 vue 例項,同時任何 vue 例項都可以註冊為 vue 元件。

    你只是把一個 vue 例項註冊成了另一個 vue 例項的元件而已。

    就像物件的屬性也可以是物件一樣,迭代關係。

  • 中秋節和大豐收的關聯?
  • 給水蛭咬了有什麼後果?由輕到重下謝謝了?