【发布时间】:2013-09-20 01:25:20
【问题描述】:
我有一个 Hottowel 应用程序和一个用于创建新实体的 Durandal 模式对话框。在它的视图模型中,我有create 和cancel 函数,它们都调用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