儘管父子元件可以通過 this.par
ent,
this
.parent,this.
parent
,thi
s.child,this.$root互相訪問,但是子元件應當避免直接依賴父元件的資料
因為作用域是有層次的,所以我們可以在作用域上傳遞事件。如果要通知整個事件系統,就要向下廣播。每個vue例項都是乙個事件觸發器
(1)vue自定義事件,用於在元件樹中通訊
**如下(示例):
>
"child-template"
>
v-model
="msg"
>
v-on:click
="notify"
>
dispatch eventbutton
>
template
>
"events-example"
>
>
message:}p
>
>
child
>
div>
body
>
>
//註冊子元件
//將當前的訊息派發出去
vue.
component
('child',}
, methods:}}
})//初始化父元件
//收到訊息時將事件推入乙個陣列中
var parent =
newvue(,
//建立例項時,『events』選項簡單的呼叫'$on'
events:}}
)script
>
(2)也可以在子元件用到的地方宣告事件處理器,這樣可以更直觀
**如下(示例):
>
'child-template'
>
v-model
="msg"
>
v-on:click
="notify"
>
dispatch eventbutton
>
template
>
"event-example"
>
>
message:}p
>
v-on:child-msg
="handleit"
>
child
>
div>
body
>
>
//註冊子元件
//將當前訊息源派發出去
vue.
component
('child',}
, methods:}}
})//初始化父元件
//在收到訊息時將事件推入乙個陣列中
var parent =
newvue(,
methods:}}
)script
>
這樣就很清楚了——當子元件觸發了child-msg事件時,父元件的handleit方法將會被呼叫,所有影響父元件狀態的**都放在父元件的handleit方法中;子元件只關注觸發事件。
(1)在子元件中觸發事件
(2)在父模板中用到子元件的地方宣告事件觸發器,並繫結到父模板中的方法上
這樣,父元件狀態控制由父元件的方法決定,子元件只管觸發事件即可
Vue 元件通訊
單層元件通訊 prop 元件例項的作用域是孤立的。這意味著不能 也不應該 在子元件的模板內直接引用父元件 的資料。父元件的資料需要通過 prop 才能下發到子元件中。子元件要顯式地用 props 選項宣告它預期的資料 vue.component child 然後給他傳乙個訊息 message hel...
vue元件通訊
這部分vue文件已經說的很清楚了,但是為了更好的理解,自己再整理一遍。首先,父元件的與子元件的通訊是通過子元件的props。那麼子元件有資料變化時,想要通知父元件應該怎麼辦呢?父元件可以在使用子元件的地方直接用 v on 來監聽子元件觸發的事件。簡單來說,就是子元件監聽的事件,在函式內使用 emit...
Vue元件通訊
父子級通訊推薦使用 props emit parent children refs attrs listeners 子元件使用props 接收父元件傳遞的值 父元件向子元件傳值 子元件通過 emit 讓父元件接收事件,改變父元件的data裡面的值 子元件向父元件傳值 父元件 子元件 這裡的props...