如何使用Knockout绑定javascript对话框?

如何使用Knockout绑定javascript对话框?,javascript,knockout.js,Javascript,Knockout.js,我在ObservalArray中有一个数据列表,我想在javascript对话框窗口中显示它(如果有必要,我使用jQuery.blockUI)。不幸的是,页面加载后,对话框似乎没有绑定。对话框正确初始化(显示数据),但不会随更改而更新 没有Javascript错误,在生成对话框并将其添加到文档后,我将绑定移动到了(没有效果)。我还尝试在组成对话框的主div上调用ko.applyBinding,但由于某种原因,这会导致部分主页被隐藏(DOM在那里,但它们被隐藏) 编辑:我已经创建了一个重现问题的项

我在ObservalArray中有一个数据列表,我想在javascript对话框窗口中显示它(如果有必要,我使用jQuery.blockUI)。不幸的是,页面加载后,对话框似乎没有绑定。对话框正确初始化(显示数据),但不会随更改而更新

没有Javascript错误,在生成对话框并将其添加到文档后,我将绑定移动到了(没有效果)。我还尝试在组成对话框的主div上调用ko.applyBinding,但由于某种原因,这会导致部分主页被隐藏(DOM在那里,但它们被隐藏)

编辑:我已经创建了一个重现问题的项目。罪魁祸首似乎是将对话框的内容包装在一个div中。如果我直接显示内容,它似乎可以工作(当然我不能这样做,包装器为我们的对话框提供了一种通用的样式)


我正在从流感中恢复,可能很容易错过一些明显的东西,但我已经尝试了一整天,什么都没有发生。有什么想法吗?

问题是DOM中不存在该对话框(尽管您调用了
$(document).append()
。您不能将div附加为文档本身的子项)。相反,将对话框附加到主体并隐藏它

$dlg = $('<div></div>').hide();
$('body').append($dlg);
$dlg=$('').hide();
$('body')。追加($dlg);

在这里工作:

您能发布一个示例JSFIDLE吗?我无法在JSFIDLE中复制它,但我能够确定它与对话框有关(尽管可能是我正在做的事情,而不是blockUI)。当我有更好的答案时,我会回来报告的。噢!只是一个愚蠢的错误:)。谢谢在这件事上浪费了大部分8个小时,grrr。对话框代码已经在生产中运行了一年多(第一次使用Knockout),我甚至都没想过看它(有趣的是,我在JSFIDLE中复制了它)。