ステップベースのフォームジャーニーでのコンポーネントとイベント処理のために、アプリケーションでRiotJSとRiotControlを使用しています。フォーム画面の 1 つは、基本的に 2 つの店舗に送られるデータを収集します。昔はこれをマルチモデル ビューと呼び、Rails などのビュー モデルで処理していました。この画面では、顧客に関する情報と実際の移動に関する情報が収集されるため、フォームが送信されると、2 つの異なる懸念事項が 2 つの異なる店舗に送信されます。
// 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.
})
次のフォーム画面では、レンダリング前に両方のストアからの情報が必要になるため、この画面をマウントしてレンダリングする前に、2 つのストアからの両方の更新イベントが確実にトリガーされるようにする方法を理解するのに苦労しています。イベント ハンドラーの後続のトリガー。このようなことは可能ですか、それとも間違った方法で行っていますか?
どうもありがとう