- Vue.js從入門(mén)到項(xiàng)目實(shí)踐(超值版)
- 聚慕課教育研發(fā)中心編著
- 350字
- 2022-07-29 14:27:38
3.3.5 terminal

terminal:使用terminal選項(xiàng)是一個(gè)相對(duì)較為復(fù)雜的過(guò)程,選項(xiàng)terminal的作用是阻止Vue.js遍歷當(dāng)前元素及其內(nèi)部元素,并由該指令本身去編譯綁定元素及其內(nèi)部元素。Vue通過(guò)遞歸遍歷DOM樹(shù)來(lái)編譯模塊。但是當(dāng)它遇到terminal指令時(shí)會(huì)停止遍歷這個(gè)元素的后代元素,并由terminal指令接管編譯這個(gè)元素及其后代元素。v-if和v-for都是terminal指令。
編寫(xiě)自定義terminal指令是一個(gè)高級(jí)話(huà)題,需要較好地理解Vue的編譯流程,但這不是說(shuō)不可能編寫(xiě)自定義terminal指令。用terminal:true指定自定義terminal指令,可能還需要用Vue.FragmentFactory來(lái)編譯partial。下面是一個(gè)自定義terminal指令的示例,terminal指令編譯內(nèi)容模板并將結(jié)果注入頁(yè)面的另一個(gè)地方。
提示:如果想編寫(xiě)自定義terminal指令代碼,建議讀者先通讀內(nèi)置terminal指令的源碼(如v-if和v-for),以便更好地了解Vue的內(nèi)部機(jī)制。
代碼如下:
var FragmentFactory = Vue.FragmentFactoryvar remove = Vue.util.removevar createAnchor = Vue.util. createAnchor Vue.directive('inject', { terminal: true, bind: function(){ var container = document.getElementById(this.arg) this.anchor = createAnchor('v-inject') container.appendChild(this.anchor) remove(this.el) var factory = new FragmentFactory(this.vm, this.el) this.frag = factory.create(this._host, this._scope, this._frag) this.frag.before(this.anchor) }, unbind: function(){ this.frag.remove() remove(this.anchor) } }) <div id="modal"></div> <div v-inject:modal> <h3>header</h3> <p>body</p> <p>footer</p> </div>
推薦閱讀
- 眾妙之門(mén):網(wǎng)站UI設(shè)計(jì)之道2
- 網(wǎng)頁(yè)設(shè)計(jì)與制作:HTML+CSS+JavaScript標(biāo)準(zhǔn)教程
- Vue.js Web開(kāi)發(fā)案例教程(在線(xiàn)實(shí)訓(xùn)版)
- 網(wǎng)頁(yè)設(shè)計(jì)與網(wǎng)站建設(shè)從入門(mén)到精通
- 網(wǎng)頁(yè)設(shè)計(jì)與制作(Dreamweaver CS6)
- Photoshop網(wǎng)頁(yè)設(shè)計(jì)從入門(mén)到精通
- Illustrator平面設(shè)計(jì)180例五步通
- ADOBE DREAMWEAVER CS6 標(biāo)準(zhǔn)培訓(xùn)教材
- 淘寶店鋪?lái)?yè)面設(shè)計(jì)與裝修實(shí)戰(zhàn)教程
- Premiere Pro CS6多功能教材
- Photoshop熱門(mén)手機(jī)APP與網(wǎng)頁(yè)游戲界面設(shè)計(jì)從入門(mén)到精通
- Vue.js核心技術(shù)解析與uni-app跨平臺(tái)實(shí)戰(zhàn)開(kāi)發(fā)
- Web開(kāi)發(fā)者晉級(jí)之道:架構(gòu)、模式和領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
- Linux系統(tǒng)與網(wǎng)絡(luò)服務(wù)管理技術(shù)大全(第二版)
- HTML+CSS+JavaScript網(wǎng)頁(yè)制作(第2版)