不调用knockoutjs custombindings更新方法

时间:2012-12-14 17:34:30

标签: knockout.js

更新我已将代码移至jsFiddle http://jsfiddle.net/TnSV6/13/

当调用edit时,模型被设置为视图模型并打开对话框。但是,当调用saveundo时,模态设置为null但对话框不会关闭。

如果我在jqDialog处理程序中明确使用jquery来使取消链接和ajax完成事件关闭对话框,我可以使这个工作,但这感觉有点hackish因为jqDialog.update应该管理打开/关闭。 / p>

似乎呼叫未开始转发到jqDialog.update()。但我不知道在哪里被阻止。

1 个答案:

答案 0 :(得分:1)

是的,我上面说的实际上是问题。在你的with内部,observable已经被打开,所以你只是在处理SettingShipmentDate.workOrder的内容。自定义绑定不知道持有它的实际observable。

一个简单的解决方法就是把它写成:

<!-- ko with: SettingShipmentDate.workOrder -->
<div data-bind="jqDialog: $parent.SettingShipmentDate.workOrder, dialogOptions: {close: $root.SettingShipmentDate.undo}" data-title="Set Shipment Date">

现在你的绑定传递了可观察的workOrder而不仅仅是它的内容,你在绑定的update函数中做的解包将能够创建依赖。

示例:http://jsfiddle.net/rniemeyer/Y4JbP/

否则,您可以稍微重构一下,将with语句移到div或其内部。虽然,with目前正在保护该值为null。