摘要:我們拿為例是指令的簡寫,用來綁定事件監(jiān)聽器我們使用組件的時候,會注冊了一個自定義的事件在組件內(nèi)部觸發(fā)的方式也很簡單調(diào)用了來觸發(fā)當(dāng)前實例上的事件,事件名為那思路來了,如果外層嵌套在了某一個組件里面,事件之間的互相調(diào)用也是類似的,只
我們拿 input-number 為例:
@ 是 v-on 指令的簡寫,用來綁定事件監(jiān)聽器:
我們使用組件的時候,會注冊了一個自定義的事件:
methods: { change (v) { console.log(v) } }
在組件內(nèi)部觸發(fā)的方式也很簡單:
調(diào)用了 $emit 來觸發(fā)當(dāng)前實例上的事件,事件名為 on-change
this.$emit("on-change", val);
那思路來了,如果 InputNumber 外層嵌套在了某一個 FormItem 組件里面,事件之間的互相調(diào)用也是類似的,只是多了個假設(shè):
嵌套關(guān)系,可能有多級父子
像 element 和 iview 多設(shè)計了一個 mixins,里面提供了一個方法:dispatch
它接受 3 個參數(shù):
componentName 組件名
eventName 自定義事件名稱
params 事件傳遞的參數(shù)
dispatch(componentName, eventName, params) { }
比如類似 input-number,很多這種表單內(nèi)嵌的組件,都會設(shè)計和 FormItem 的互動:
this.dispatch("FormItem", "on-form-change", val);
我們在設(shè)計 FormItem組件的時候,注意:
export default { name: "FormItem" }
然后注冊一個自定義事件,方式也是一樣的:
我們來看一下 dispatch 函數(shù)的內(nèi)部:
思路是一層一層往上找父元素:
$parent -- 父實例
$root -- 組件樹的根 Vue 實例
var parent = this.$parent || this.$root;
獲取父組件的 name:
var name = parent.$options.name;
開始循環(huán)判斷:
while (parent && (!name || name !== componentName)) { // ... }
比如上面的input-number 內(nèi)部調(diào)用了 dispatch,傳入了參數(shù),就是一直找父元素 name 為 FormItem 的
在 while 的內(nèi)部:
接著找它的父示例,然后獲取 name
parent = parent.$parent; if (parent) { name = parent.$options.name; }
最終如果找到了:
和最開始觸發(fā)自定義事件是一樣的:$emit
if (parent) { parent.$emit.apply(parent, [eventName].concat(params)); }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/97639.html
摘要:組件監(jiān)聽自定義事件。組件觸發(fā)自定義事件。生命周期鉤子函數(shù),后組件的所有的事件監(jiān)聽器會被移除。技術(shù)點總結(jié)組件設(shè)計的思想包括單數(shù)據(jù)流事件中心,核心是組件通信。完善給彈出日期面板和關(guān)閉日期面板增加組件自定義事件即調(diào)用觸發(fā)和事件。預(yù)覽 組件庫官網(wǎng) github地址 如果喜歡各位小哥哥小姐姐給個小星星鼓勵一下哈, 請勿在生產(chǎn)環(huán)境中使用,供學(xué)習(xí)&交流~~ showImg(https://user...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:前言本文主要是有關(guān)前端方面知識按照目前的認(rèn)知進行的收集歸類概括和整理,涵蓋前端理論與前端實踐兩方面。 前言:本文主要是有關(guān)前端方面知識按照 XX 目前的認(rèn)知進行的收集、歸類、概括和整理,涵蓋『前端理論』與『前端實踐』兩方面。本文會告訴你前端需要了解的知識大致有什么,看上去有很多,但具體你要學(xué)什么,還是要 follow your heart & follow your BOSS。 初衷...
摘要:注意指令前面需要加,對指令傳遞數(shù)據(jù)賦值使用例如約定速成加上,表示自定義指令不要使用駝峰式命名。需要通過方法實現(xiàn)自定義指令注冊完成。 vue Vue.js 構(gòu)建數(shù)據(jù)驅(qū)動的web界面庫。集中實現(xiàn)MVVM 的 VM層。容易與其他庫或項目整合 通過盡可能簡單的API實現(xiàn)相應(yīng)的數(shù)據(jù)綁定和組合的視圖組件核心:相應(yīng)的數(shù)據(jù)綁定系統(tǒng), 數(shù)據(jù)與DOM保持同步數(shù)據(jù)驅(qū)動的視圖,普通的HTML模板中使用特殊的語...
閱讀 1344·2023-04-26 00:35
閱讀 2716·2023-04-25 18:32
閱讀 3344·2021-11-24 11:14
閱讀 770·2021-11-22 15:24
閱讀 1418·2021-11-18 10:07
閱讀 6467·2021-09-22 10:57
閱讀 2774·2021-09-07 09:58
閱讀 3565·2019-08-30 15:54