mirror of https://github.com/vuejs/vue.git
fix event propagation check when chained emits (fix #1839)
This commit is contained in:
parent
5fe6e55a10
commit
83f418ee8d
|
|
@ -86,11 +86,12 @@ export default function (Vue) {
|
|||
* Trigger an event on self.
|
||||
*
|
||||
* @param {String} event
|
||||
* @return {Boolean} shouldPropagate
|
||||
*/
|
||||
|
||||
Vue.prototype.$emit = function (event) {
|
||||
var cbs = this._events[event]
|
||||
this._shouldPropagate = !cbs
|
||||
var shouldPropagate = !cbs
|
||||
if (cbs) {
|
||||
cbs = cbs.length > 1
|
||||
? toArray(cbs)
|
||||
|
|
@ -99,11 +100,11 @@ export default function (Vue) {
|
|||
for (var i = 0, l = cbs.length; i < l; i++) {
|
||||
var res = cbs[i].apply(this, args)
|
||||
if (res === true) {
|
||||
this._shouldPropagate = true
|
||||
shouldPropagate = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return this
|
||||
return shouldPropagate
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -120,8 +121,8 @@ export default function (Vue) {
|
|||
var children = this.$children
|
||||
for (var i = 0, l = children.length; i < l; i++) {
|
||||
var child = children[i]
|
||||
child.$emit.apply(child, arguments)
|
||||
if (child._shouldPropagate) {
|
||||
var shouldPropagate = child.$emit.apply(child, arguments)
|
||||
if (shouldPropagate) {
|
||||
child.$broadcast.apply(child, arguments)
|
||||
}
|
||||
}
|
||||
|
|
@ -139,8 +140,8 @@ export default function (Vue) {
|
|||
this.$emit.apply(this, arguments)
|
||||
var parent = this.$parent
|
||||
while (parent) {
|
||||
parent.$emit.apply(parent, arguments)
|
||||
parent = parent._shouldPropagate
|
||||
var shouldPropagate = parent.$emit.apply(parent, arguments)
|
||||
parent = shouldPropagate
|
||||
? parent.$parent
|
||||
: null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ export default function (Vue) {
|
|||
// events bookkeeping
|
||||
this._events = {} // registered callbacks
|
||||
this._eventsCount = {} // for $broadcast optimization
|
||||
this._shouldPropagate = false // for event propagation
|
||||
|
||||
// fragment instance properties
|
||||
this._isFragment = false
|
||||
|
|
|
|||
Loading…
Reference in New Issue