select次のように、KnockoutJSビューモデルを介してHTML要素を入力しています。
<select data-bind="options: $data.answers, optionsText: function(item) { return item.text }, value: selectedAnswer, optionsCaption: 'Choose...'"></select>
私がやりたいのは、何らかの方法で各要素のclass属性を設定することです。その結果、次のようになります。option
<option class="someValue">12345</option>
これはKnockoutJSで実行できますか?私はこれに対する解決策を見つけるのに苦労しています。
編集:
Artemが提案したように、バインディングを試したところですが、foreach希望どおりに動作するのに非常に近いです。しかし、1つの問題があります。
Questionオブジェクトには、SelectedAnswerobservableをサブスクライブする関数があります。
this.selectedAnswer.subscribe(function (answer) {}
foreachバインディングを使用すると、subscribe()質問ごとに1回起動します(回答を選択するまで起動しないはずです。これは、[選択...]オプションが表示されなくなったためだと思います)。
バインディングの場合foreach、デフォルトのテキストを「Choose ...」に戻しselectedAnswer.subscribe()、リストが入力されているときではなく、ユーザーがアイテムを選択するまでの起動を停止するにはどうすればよいですか。
編集:
これが私がこれを行った方法です。
KOビューモデルクラスには、bindingFinished内部でチェックするブール値がありselectedAnswer.subscribe()ます。その場合false、関数から戻るだけです。trueの場合、通常どおり続行します。
Answerまた、配列の先頭にnewを追加して、回答にデフォルトの「Choose」オプションを追加します。最終的に、ユーザーがオプションを選択した後にのみ、データがバインドされているときにサブスクライブ機能が実行されません。
Artemにご協力いただきありがとうございます。