モーダルは私が思っていたよりも難しいことが判明しています:/
ビュー/ビューモーダルを適切にロードするモーダルを取得し、保存ボタンをクリックすると情報が保存されます(Q.jsから「空にする必要があります:[]」が表示されますが、どうやらこれは問題ではありませんか?)私が抱えている問題持つことはおそらく約束に関連していますが、もしそうなら私はそれを見つけることができません.
親のビュー モデル -
var createNew = function () {
app.showModal(tfcreate).then(function (modalResult) {
if (!modalResult) { return false; }
var templateId = modalResult;
router.replaceLocation('#/templateformedit/' + templateId);
});
};
モーダルのビューモデル -
var cancel = function () {
this.modal.close(false);
};
var save = function () {
isSaving(true);
setRevisionInfo();
datacontext.saveChanges()
.then(alertMe)
.fail(initFailed)
.fin(complete);
function setRevisionInfo() {
templateForm().revisionLevel(1);
templateForm().createdById(shell.currentUser().id());
templateForm().lastRevisedId(shell.currentUser().id());
var nowDT = moment().format('LL');
templateForm().lastRevisedDT(nowDT);
templateForm().createdDT(nowDT);
}
function alertMe() {
return console.log('done'); // <<< This is firing ok
}
function complete() {
isSaving(false);
this.modal.close(templateForm().id()); // <<< Breakpoint reaches here just fine
}
};
cancel() にバインドされているキャンセル ボタンを押すと、問題なく閉じます。保存ボタンをクリックすると、save() がヒットし、オブジェクトが適切に保存され、すべてのブレークポイントに到達しますが、閉じません。保存した後にキャンセルを押すと、再び正常に閉じます。complete() 関数中に cancel() を呼び出してみましたが、ステートメントに到達しましたが、再び閉じません。何か案は???
注: モーダルから router.replaceLocation を呼び出すことができます。ビューは問題なく変更されますが、モーダルは次のビューに持続します。
編集: isSaving が終了し、hasChanges が false になるまで無効になる別のボタン「閉じる」を追加しました。