【问题标题】:Durandal Modal Won't CloseDurandal 模态不会关闭
【发布时间】:2013-05-02 04:42:55
【问题描述】:

模式变得比我想象的更难:/

让模态正确加载视图/视图模态,单击保存按钮保存信息(我确实从 Q.js 得到“应该为空:[]”,但显然这不是问题?)我遇到的问题可能与承诺有关,但如果是,我找不到。

父视图模型 -

var createNew = function () {
    app.showModal(tfcreate).then(function (modalResult) {
        if (!modalResult) { return false; }

        var templateId = modalResult;
        router.replaceLocation('#/templateformedit/' + templateId);
    });
};

Modal 的视图模型 -

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 之前被禁用,这让我可以关闭它,一切都很好,但这不应该是必要的,对吧?

【问题讨论】:

  • 你确定complete() 中的this 仍然是你的虚拟机上下文吗?在 save() 顶部尝试 var self=this; 并在 complete() self.modal.close(...)
  • 就是这样。如果你能回答这个问题,我会接受,谢谢 Rainer。

标签: modal-dialog breeze durandal q


【解决方案1】:

每个请求:

您确定complete() 中的this 仍然是您的虚拟机上下文吗?在 save() 顶部和 complete() 中尝试 var self=this; self.modal.close(...)

【讨论】:

  • 这就是解决方案。我试图从变量内的函数内部调用它,即使它会毫无问题地触发它也没有告诉模态关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 2022-08-05
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多