在对话框/模态(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
。我究竟做错了什么?
答案 0 :(得分:0)
您可以设置响应重定位消息的自定义对话框上下文(使用Durandal&#39的app.trigger())。您将在对话框中的某些事件上触发消息(例如,如您所说,用户选择的内容)。
同样在该自定义对话框上下文中,创建方法调用reposition
。在该自定义对话框上下文的activate
或attached
处理程序中,订阅用于触发重新定位的消息。
我提倡使用消息传递方法,因为您可能希望隔离您的选择视图模型"在自己的viewModel中,然后将其组合到自定义对话框上下文中。使用此方法,您的选择viewModel和您的自定义对话框上下文将被松散绑定。这样,您可以在代码中的其他位置使用您的选择viewModel(甚至还有一些其他viewModel,而不是自定义对话框上下文,响应重定位消息)。