您好,登錄后才能下訂單哦!
前言
日常中我們要使用一個彈框組件的方式通常是先通過Vue.component 全局或是 component 局部注冊后,然后在模版中使用。接下來我們嘗試編程式的使用組件。
實現
其實步驟很簡單
document.createElement
其實想要插入一個元素,通過 document.createElement 就可以實現,并非一定需要上面兩步,但是涉及到組件的復雜度、樣式設置、可維護性所以使用創建構造器的方式比較可行。
Vue.extend()
首先來定義這個彈框的結構和樣式,就是正常的寫組件即可
<template> <div class="grid"> <h2 class="head">這里是標題</h2> <div @click="close">{{ cancelText }}</div> <div @click="onSureClick">{{ sureText }}</div> </div> </template> <script> export default { props:{ close:{ type:Function, default:()=>{} }, cancelText:{ type:String, default:'取消' }, sureText:{ type:String, default:'確定' } }, methods:{ onSureClick(){ // 其他邏輯 this.close() } } }; </script>
將創建構造器和掛載到目標元素上的邏輯抽離出來,多處可以復用
export function extendComponents(component,callback){ const Action = Vue.extend(component) const div = document.createElement('div') document.body.appendChild(div) const ele = new Action({ propsData:{ cancelText:'cancel', sureText:'sure', close:()=>{ ele.$el.remove() callback&&callback() } } }).$mount(div) }
上面代碼需要注意以下幾點:
Vue.extend 和 Vue.component component 的區別
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。