2

モーダルは私が思っていたよりも難しいことが判明しています:/

ビュー/ビューモーダルを適切にロードするモーダルを取得し、保存ボタンをクリックすると情報が保存されます(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 になるまで無効になる別のボタン「閉じる」を追加しました。

4

1 に答える 1

4

リクエストごと:

thisincomplete()がまだ vm コンテキストであると確信していますか? var self=this;save() の先頭と complete() で試してくださいself.modal.close(...)

于 2013-05-01T20:42:55.713 に答える