Web アプリケーションにドキュメントのリストがあります。ユーザーが新しいドキュメントを作成できるようにします。「新規」をクリックすると、ドキュメント ショートカットの厳密にクライアント側のインスタンスが表示され、空白のタイトル フィールドがフォーカスされます。次に、タイトルを入力して [保存] をクリックします。ビューモデルでは、保存は次のように行われます。
var document = new documentViewModel(dataservice.createDocument(newData)); // calls ajax method below with new document's data to POST back
innerModel.documents.remove(item);
innerModel.documents.push(document);
プレースホルダー ドキュメント ( item
) を削除し、新しい real-data をプッシュしますdocument
。しかし現状では、ドキュメントは、非同期呼び出しからの実際のデータが返される前にプッシュされる空白のアイテムにすぎないため、実際のデータはプッシュされません。
Save
jquery 呼び出しをエンドポイントに送信します。
var options = {
url: saveEndpoint,
type: 'POST',
dataType: 'json',
data: newDocument,
xhrFields: {
withCredentials: true
}
};
return $.ajax(options)
.done(function (response) {
return response;
})
.fail(function (msg) {
toastr.error("Error: Could not create document.");
});
現状では、実際のデータがビューに到達しないため、これは機能していません。
この方法で非同期呼び出しを使用して新しいアイテムを作成する標準的なアプローチは何ですか? 同期呼び出しにする必要がありますか? それとも、私が気付いていない妥協点がありますか? どんな助けでも大歓迎です。