【问题标题】:Durandal 2.0 Dialog RepositioningDurandal 2.0 对话框重新定位
【发布时间】:2014-06-19 11:59:04
【问题描述】:

在对话框/模式 (http://durandaljs.com/documentation/Showing-Message-Boxes-And-Modals.html) 的 durandal 文档的底部,有一些用于重新定位对话框的语法。随着用户选择内容,我的对话框逐渐变大,因此每次进行选择时,我都想致电reposition()。我试着跟着这个:

vm.compositionComplete = function (child, parent, context) {

        var addEditDialog = dialog.getDialog(context.model); // resolves

        // whenever something is selected:
        addEditDialog.context.reposition(vm); // no method 'reposition'

}

但我得到一个错误 - 没有函数 reposition。我究竟做错了什么?

【问题讨论】:

    标签: durandal durandal-2.0


    【解决方案1】:

    您可以设置响应重新定位消息的自定义对话框上下文(使用 Durandal 的 app.trigger())。您将在对话中的某些事件(例如,正如您所说的,用户选择内容)时触发消息。

    同样在该自定义对话框上下文中,创建一个方法调用reposition。在该自定义对话框上下文的 activateattached 处理程序中,订阅用于触发重新定位的消息。

    我提倡消息传递方法,因为您可能希望将“选择视图模型”隔离在其自己的视图模型中,然后将其组合到您的自定义对话框上下文中。使用这种方法,您的选择 viewModel 和您的自定义对话框上下文将松散绑定。这样,您可以在代码的其他地方使用您的选择视图模型(甚至有一些其他视图模型,而不是自定义对话框上下文,响应重新定位消息)。

    【讨论】:

    • 谢谢。您知道为什么记录的语法不起作用吗?我宁愿在这里不做重大改变:/
    • 看看这个:github.com/BlueSpire/Durandal/pull/362reposition 是 2.1 功能。您表示您使用的是 2.0。
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多