0

更新コードをjsFiddlehttp://jsfiddle.net/TnSV6/13/に移動しまし

edit呼び出されると、モデルはビューモデルに設定され、ダイアログが開きます。ただし、saveまたはundoが呼び出されると、モーダルはnullに設定されますが、ダイアログは閉じません。

jqDialogハンドラーでjqueryを明示的に使用してキャンセルリンクとajaxcompleteイベントでダイアログボックスを閉じると、これを機能させることができますが、jqDialog.update開閉を管理する必要があるため、少しハックな感じがします。

呼び出しがに転送され始めていないように見えますjqDialog.update()。しかし、それがどこで防がれているのかわかりません。

4

1 に答える 1

1

はい、私が上で言ったことは実際には問題です。オブザーバブルの内部withはすでにラップが解除されているため、の内容を処理しているだけですSettingShipmentDate.workOrder。カスタムバインディングは、それを保持する実際のオブザーバブルについては知りません。

簡単な修正は、次のように書くことです。

<!-- 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になるのを防いでいます。

于 2012-12-15T15:18:01.753 に答える