天天看點

vue動态元件

<body>

<div id="app">

<h1>登入頁面</h1>

<select v-model="loginType">

<option value="com1">使用者名登入</option>

<option value="com2">郵箱登入</option>

</select>

<!-- 根據不同條件顯示不同的元件,可以通過v-if實作,但是這種方法不是最好的方法 -->

<!-- <com1 v-if="loginType=='username'"></com1>

<com2 v-if="loginType=='email'"></com2> -->

<!-- 某個元件根據條件,在不同的元件之間切換,可以使用動态元件技術 -->

<!-- component标簽是動态元件标簽,需要設定is屬性,is設定為哪個元件名,component在渲染時就會被渲染為這個元件 -->

<!-- 是以,要想實作元件的切換,隻需要将component的is屬性綁定到一個變量上,變量的值在多個元件名之間切換,就能實作元件的切換 -->

<!-- 如果希望元件切換時保留原來的元件,切回時不建立新的元件,則需要把component寫在keep-alive标簽中 -->

<keep-alive>

<component :is="loginType"></component>

</keep-alive>

</div>

</body>

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

<script type="text/html" id="com1">

<div>

<label for="">使用者名</label>

<input type="text">

<br>

<label for="">密碼</label>

<input type="password">

<button>注冊</button>

</script>

<script type="text/html" id="com2">

<label for="">郵箱</label>

<script>

// 動态元件在切換時,總是銷毀舊的元件,建立新的元件。

let com1 = {

template:"#com1",

created() {

console.log("com1元件建立了");

},

mounted() {

console.log("com1元件渲染完畢了");

destroyed() {

console.log("com1元件銷毀了");

// activited聲明周期函數,當元件被激活時調用。

activated() {

console.log("com1 activited");

}

let com2 = {

template:"#com2",

console.log("com2元件建立了");

console.log("com2元件渲染完畢了");

console.log("com2元件銷毀了");

console.log("com2 activited");

new Vue({

el:"#app",

data:{

loginType:"com1"

components:{

com1,

com2

}

});

繼續閱讀