Mvvm durandal 2.0自定义对话框主控详细信息

Mvvm durandal 2.0自定义对话框主控详细信息,mvvm,dialog,durandal,master-detail,durandal-2.0,Mvvm,Dialog,Durandal,Master Detail,Durandal 2.0,升级到durandal 2.0后,我发现我需要将主列表页转换为使用showDialog函数,而不是showModal 以前我的主模型是这样的: define(['durandal/amd/require', 'durandal/app', 'durandal/viewLocator', 'durandal/system', 'durandal/plugins/router', 'durandal/lib/tableModel', 'viewmodels/product'], functi

升级到durandal 2.0后,我发现我需要将主列表页转换为使用showDialog函数,而不是showModal

以前我的主模型是这样的:

define(['durandal/amd/require', 'durandal/app', 'durandal/viewLocator',     'durandal/system', 'durandal/plugins/router', 'durandal/lib/tableModel', 'viewmodels/product'], function (require, app, viewLocator, system, router, table, product)     {
var tm = {
    tableModel: new tableModel(),
    createProduct: function (data) {
        app.showModal(product, data);
    }
}
//...
return tm;
}
然后,在我的产品详细信息查看页面中,我可以像这样轻松地关闭模式 data-bind="click: $root.modal.close">Close 但是访问关闭功能的方式很烦人:

首先,我需要将“插件/对话框”输入到产品详细视图模型中;我不希望这样做,因为我不认为详细视图模型需要知道它是一个对话框,只有主列表视图模型需要知道这一点

然后在我指定的产品详细视图模型的compositionComplete事件中:

prodedit.close = function () {
   dialog.close(prodedit);
}
(prodedit是返回的产品详细信息vm)

这样,可以使用以下方法关闭“产品详细信息”对话框:

data-bind="click: $root.close"
好的,现在是我的问题:

这将使对话框弹出一次或两次,但此后将失败,不会出现错误。我唯一能看到的是dialogActivator.activateItem出现故障行:dfd.resolve(false)

有趣的是,如果我在断点上暂停足够长的时间,问题就不会发生。但一旦发生一次,就再也无法打开对话框

有更好的方法吗


谢谢

啊,我找到了窃听器。是由敲除3β引起的。removeAll on a empty array在该版本中是一个bug,但在最近发布的候选版本中已修复。如果您可以将您的发现作为解决此问题的答案,则更好,这样其他人将获得更多好处。
data-bind="click: $root.close"