рдирдорд╕реНрддреЗ, рдореИрдВ vm.$dispatch
рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╢реНрд░реЛрддрд╛ рдХреЗ рдХреЙрд▓рдмреИрдХ рд╕реЗ рдЖрдЧреЗ рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдХреЙрд▓рдмреИрдХ _ (рдЖрдИрдПрдордУ) _ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рдХрд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд╕реНрд╡рдпрдВред рдореИрдВ Vue рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдЫреВрдЯ рдЧрдпрд╛ рд╣реИред
var vm = new Vue({
// omitted
events: {
'object:creating' : function (args) {
// omitted
return false;
},
'object:created' : function (args) {
// omitted
}
}
});
var child = new Vue({
parent: vm,
// omitted
methods: {
performWhatever: function (args) {
//
},
createObject: function (args) {
// Pre-create
if ( this.$dispatch('object:creating', args) === false ) {
// Stop the creation
}
// The business logic
this.performWhatever(args);
// Post-create
this.$dispatch('object:created', args);
}
}
})
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░реА-рдХреНрд░рд┐рдПрдЯ рдСрдкрд░реЗрд╢рди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рдзрдиреНрдпрд╡рд╛рджред
SomeAsyncCode === false
$dispatch
рдЖрдкрд╕реЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣рд┐рдд рдХрдИ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИредthis.$dispatch('object:creating', args, function() {
// The business logic
this.performWhatever(args);
})
рдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреА рддрд░рдл,
events: {
'object:creating' : function (args, callback) {
// Do something with args and fire callback (or not)
callback()
}
}
рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @fnlctrl :)
@fnlctrl рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдореИрдВ рднреВрд▓ рдЧрдпрд╛, рдХрд┐рддрдирд╛ рд╢рд░реНрдордирд╛рдХ =D
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
SomeAsyncCode === false
$dispatch
рдЖрдкрд╕реЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣рд┐рдд рдХрдИ рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИредрдФрд░ рд░рд┐рд╕реАрд╡рд░ рдХреА рддрд░рдл,