0

ko で動作するdropdownchecklist jquery プラグインを取得しようとしています。カスタム バインディング ハンドラを接続しましたが、ドロップダウンにオプションが入力されません。私のフィドルをチェックしてください:http://jsfiddle.net/amitava82/wMH8J/11/

あなたの助けに感謝。ありがとう!

4

2 に答える 2

0

@freakish answerはほとんどの静的コンテンツで機能しますが、テンプレートifforeachバインディングなどを使用して動的なもの、または「突然」利用可能になるチェックボックスオプションの追加など、基になるデータ更新をサポートする必要がある場合は機能しません。

より単純なjQuery呼び出しをラップするために使用できる本当に単純な$.buttonバインディング の例。applyメンバーを追加controlsしてバインディングで使用できるようにするのは簡単なことです。

optionsjQueryドロップダウンチェックリストの場合は、組み込みのハンドラーを使用したいので少し注意が必要ですが、jQueryが依存するDOM要素を作成するため$.dropdownchecklist、ハンドラーの実行後に実行する必要があります。組み込みのハンドラーをラップすることにより、常に正しいコンテキストで呼び出されます。optionsoptions

私の使用経験(私たちのプロジェクトでは約10〜15のカスタムバインディングを使用しています)では、実際のJSの平均は約10〜20行になります。+100行に膨らみ始めたら、リファクタリングして再考することをお勧めします。これがお役に立てば幸いです:-)仕事中の主要なUI実装プロジェクトでKnockoutを数か月使用していて、本当にたくさんのことを学びました。このようなことに驚いています。

于 2012-07-03T18:29:15.973 に答える
0

これは、KnockoutJS をバインドする前にドロップダウンを作成するためです。このドロップダウンはどのように機能しますか? selectのコンテンツをコピーして見栄えの良いリストを作成する追加のdivspanを作成します。その後、バインディングが適用され、select が変更されますが (必要に応じて)、ドロップダウン更新されません。これは、このライブラリが一種の静的であるためです。つまり、呼び出し時にのみselectの内容がコピーされます。

一時的な修正を確認できるように、 jsFiddleを更新しました。つまり、ドロップダウンを作成する前にバインディングが適用されるようになりました。唯一の問題は、optionsフィールドを変更しviewModelてもドロップダウンに影響しないことです。おそらく行う必要があるのは、subscribe メソッドを使用することです。フィールドへの変更を監視する必要があり、変更optionsが発生した場合はドロップダウンを再作成する必要があります。それは少なくとも簡単な方法です。

于 2012-07-02T08:07:32.303 に答える