Привет, я немного запутался в vm.$dispatch
так как я ожидал, что он вернет значения из обратного вызова слушателя для дальнейшей логики, которую нельзя было поместить в обратный вызов _ (imo) _, но оказалось, что это сам пример. Я изучаю 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
ожидает, что вы передадите несколько аргументов, включая функцию обратного вызова.а на стороне получателя