【问题标题】:Closing Durandal modal关闭 Durandal 模态
【发布时间】:2013-09-20 01:25:20
【问题描述】:

我有一个 Hottowel 应用程序和一个用于创建新实体的 Durandal 模式对话框。在它的视图模型中,我有createcancel 函数,它们都调用close 成功。问题是当我从另一个函数调用close 时,模态不会关闭。当我直接调用它时它会关闭。

代码:

var close = function () {
    dialog.close(this);
};

var cancel = function () {
    datacontext.cancelChanges();
    close();
};

var create = function () {
    return datacontext.saveChanges()
        .then(close);
};

【问题讨论】:

  • 你能粘贴整个模型的代码吗?仅看这些功能很难判断有什么问题,因为它们看起来很不错。
  • 您忘记了 this 的上下文会根据 close 函数的调用方式而变化。您需要确保 this 是您的视图模型;否则你将永远无法关闭它。
  • 你是对的,但结果仍然很奇怪......调试显示当我自己关闭时,this 是一个Window 对象,其getDialog() 方法返回对话框。从另一个函数调用 close 使 this 成为 Window 对象,其 getDialogmethod 返回 undefined... 让我失望... 无论如何,调用 vm.close() 可以解决问题。

标签: modal-dialog durandal hottowel


【解决方案1】:

当你从另一个函数调用它时它不起作用是什么意思?你确定你调用的时候上下文还是一样的吗?

var close = function () {
    var self = this;
    dialog.close(self);
};

尝试将您的关闭函数更新为此,如果它仍然没有关闭,那么您能否解释一下在哪里您正在调用它,它没有关闭?从同一个视图模型内部,从另一个视图模型,哪个函数,等等......

【讨论】:

  • 也可以调用app.close(self)(这只是调用dialog.close(self)的便捷方法)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 2021-11-20
  • 1970-01-01
相关资源
最近更新 更多