我在我的应用程序中使用RiotJS和RiotControl进行基于步骤的表单旅程中的组件和事件处理。其中一个表单屏幕主要收集发送到两家商店的数据。用旧的钱,我称之为多模型视图,并会用 Rails 之类的视图模型来处理这个问题。该屏幕收集有关客户的信息以及有关实际旅程的信息,因此在提交表单时会将两个单独的关注点发送到两个不同的商店。
// Store Examples
function customerDetails() {
riot.observable(this);
this.customer = {firstName: undefined, lastName: undefined}
this.on('form-step:submitted', function(answers){
this.customer.firstName = answers.firstName,
this.customer.lastName = answers.lastName
RiotControl.trigger('customerDetails:updated', this.customer);
})
}
function surveyDetails() {
riot.observable(this);
this.survey = {questionOne: undefined, questionTwo: undefined}
this.on('form-step:submitted', function(answers){
this.survey.questionOne = answers.questionOne,
this.survey.questionTwo = answers.questionTwo
RiotControl.trigger('surveyDetails:updated', this.customer);
})
}
// In main code
nextScreen.on('surveyDetails:updated customerDetails:updated', function(details){
// I care about both of these events, but only want to execute
// this code once I've received the details from both stores.
})
下一个表单屏幕需要在渲染之前来自两个商店的信息,所以我很难看到我如何确保在安装和渲染此屏幕之前触发来自两个商店的两个更新事件,同时维护来自每个商店的数据事件处理程序的后续触发器。这样的事情可能吗,还是我以错误的方式解决这个问题?
非常感谢