2012-06-06 85 views
0

我想创建一个按钮,点击时,打开一个模式对话框,允许用户搜索产品和添加选定的搜索结果订单。observableArray绑定表不会更新时,在jQuery UI对话框内

我创建了我以为会工作的内容(jsfiddle sample),但绑定到observableArray的搜索结果表不会更新。

如果我从<div id="myDialog"/>中删除data-bind属性,则搜索结果表正确更新。

而且,我只能得到的jsfiddle样品通过将JavaScript中的主体(框架选项没有包装(体))在实际的ready()回调过程中重复同样的行为,即使脚本加载实现。

我哪里错了?

(我已为我所有的代码here。)

更新:

这似乎是结合基因敲除foreach无法看到更新的observableArray。我创建了自己的绑定(updated jsfiddle sample)模板,几乎可以做我想要的,但不是很满意。

如何获取绑定foreach以识别集合何时更改?

回答

2

这是你的破碎的样品,稍作修改,在setTimeout:http://jsfiddle.net/rniemeyer/YuV55/5/中调用.dialog()。 jQuery UI对话框功能将元素移动到页面的底部,因此当ko.applyBindings的第一次传递再次击中时,它可能会弄乱绑定。

这是另一个样本,它调用ko.applyBindings特定于容器元素(不带setTimeout):http://jsfiddle.net/rniemeyer/YuV55/6/。这意味着ko.applyBindings将不会再次点击移动的对话框,因为它在容器元素之外。

+0

辉煌,容器元素像一个魅力工作。这比我的选择和我正在寻找的要好得多。非常感谢。 – andygjp

0

经过大量测试后,我认为不可能在绑定到视图模型的jQuery UI对话框中使用绑定到observableArrayforeach--其他绑定(例如, text,这是绑定到observable似乎工作正常。

This broken sample uses a dialog bound to the viewmodel which I based on a sample found here(I think)。

sample完成我想要的。但是,该对话框并未绑定到视图模型,而是将一个点击处理程序连接到按钮以启动对话框(从此article中获取)。

这个效果很好,我对结果很满意。