選択したボックスの選択したテキストを、ノックアウトJSなどでオブジェクトの属性にバインドするにはどうすればよいですか?
-
24-10-2019 - |
質問
ストアドプロシージャから返されたJSONリストが入っている選択ボックスプルダウンがありますが、残念ながらリンクされたオブジェクトを更新すると、選択したものを返す必要があります 文章 プルダウンの、 いいえ 選択したインデックスのように考えられるインデックス(データベースの設計が不十分ですが、今のところそれに固執していて、変更できません)。
誰かが私ができることを維持するためにできることを持っていますか 選択したテキスト 適切なJavaScriptオブジェクトの属性と同期していますか?
解決
はい、あなたは私が得ていたものを手に入れました。インデックスを使用するのではなく、選択オプションの値としてテキストを使用します。値は本当に役に立つものでなければなりません。インデックスを使用したことがある場合は考えられません。数字は確かですが、選択ボックス内のアイテムの数ではなく、何らかの方法でアプリケーションのモデル(データベースからのIDなど)に関連する数字です。
素晴らしい。
他のヒント
サブスクライバーを使用する場合は、値とテキストの両方を保持できます。たとえば、JavaScriptオブジェクトのそれぞれが次のように見える場合:
var optionObject = {
text:"text1"
value: 1
}
その後、あなたのバインディングは次のようになります:
ここで、「OptionsObjects」はOptionObjectのコレクションであり、SelectedOptionにはテキストと値の2つの観測可能なプロパティがあります。最後に、SelectedOptionのValueプロパティを購読します。
viewModel.selectedOption.value.subscribe(function(newValue){
var optionText = viewModel.OptionsObjects[newValue].text;
viewModel.selectedOption.text(optionText);
});
次に、値が変更されたときに新しい選択したオプションテキストを表示する場合は、次のように拘束力を持つことができます。
<span data-bind:"text:selectedOption.text"></span>
特定のケースでは、selectedoption.text()を返します。