0

クリックするとモーダルダイアログボックスが開き、ユーザーが製品を検索して選択した検索結果を注文に追加できるボタンを備えたページを作成しようとしています。

動作すると思われるもの(jsfiddleサンプル)を作成しましたが、にバインドされている検索結果テーブルがobservableArray更新されません。

data-bindから属性を削除すると<div id="myDialog"/>、検索結果テーブルが正しく更新されます。

また、実際の実装のready()コールバック中にスクリプトがロードされたとしても、JavaScriptを本文に配置することによって(framework option no wrap(body) )、 jsfiddleサンプルで同じ動作を繰り返すことしかできませんでした。

どこが間違っているのですか?

(ここにすべてのコードを投稿しました。)

アップデート:

Knockoutforeachバインディングがの更新を確認できないようobservableArrayです。私は自分のバインディング(更新されたjsfiddleサンプル)テンプレートを作成しました。これは私が望むことをほぼ実行しますが、あまり満足のいくものではありません。

foreachコレクションが変更されたことをバインディングに認識させるにはどうすればよいですか?

4

2 に答える 2

2

.dialog()これは、setTimeoutでを呼び出すためのマイナーな変更を加えた壊れたサンプルです:http: //jsfiddle.net/rniemeyer/YuV55/5/ko.applyBindingsjQuery UIダイアログ機能は、要素をページの下部に移動するため、最初のパスが2回目にヒットしたときに、バインディングを台無しにする可能性があります。

コンテナ要素に固有の呼び出しを行う別のサンプルを次に示しますko.applyBindings(setTimeoutなし):http://jsfiddle.net/rniemeyer/YuV55/6/。これはko.applyBindings、移動されたダイアログがコンテナ要素の外側にあるため、2回目にヒットしないことを意味します。

于 2012-06-08T23:38:11.423 に答える
0

多くのテストを行った後、ビューモデルにバインドされているjQuery UIダイアログでforeachバインドを使用することはできないと思います。たとえば、バインドされている他のバインドは正常に機能しているようです。observableArraytextobservable

この壊れたサンプルは、ここにあるサンプルに基づいたビューモデルにバインドされたダイアログを使用しています(私は思います)。

このサンプルは私が望むことを達成します。ただし、ダイアログはビューモデルにバインドされていません。代わりに、クリックハンドラーをボタンに接続して、ダイアログを起動します(この記事から引用)。

これはうまく機能し、結果に満足しています。

于 2012-06-08T22:13:30.660 に答える