以下のようにhtmlでkendocomboxを定義しました
<input id="selFrameworkVersion" style="width: 210px" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value: $root.editFrameworkVersion, optionsCaption: 'Select Version...' }" />
コンボボックスは正しく読み込まれ、値が設定されますが、リスト内の適切な項目にフォーカスが設定されません。下の画像を参照してください
値が 5.5.1 であることがわかりますが、リストの最初の項目である 5.4 に設定されています。私は今、なぜそれが起こっているのかを知っています。私のコンボボックスでは、値が $root.editFrameworkVersion として設定されていることがわかります。私のビュー モデルでは、その値に対してサブスクライブ イベントを使用します。以下のコードを参照してください
self.editFrameworkVersion.subscribe(function (value) {
var combobox = $("#selFrameworkVersion").data("kendoComboBox");
var callback = function (data) {
self.editOnlyAlternativeVersions(self.versionListByProductType());
combobox.select(function (dataItem) {
return dataItem.Name === value;
});
self.editOnlyAlternativeVersions.remove(function (data) {
return parseInt($("#selFrameworkVersion").attr('value')) === parseInt(data.Id());
});
};
loadVersionListByProductType(self.editProductType().Id(), callback);
});
このサブスクライブ イベントを使用して、いくつかのロジックを実行します。このイベントでは、そのコンボボックスに値を再度ロードする WCF サービスを呼び出しています。これが、常に最初の値に設定されている理由です。しかし、いくつかのロジックのためにそのサービスを呼び出す必要があります。次に、上記で既に見たサブスクライブイベントにコードを追加しました
combobox.select(function (dataItem) {
return dataItem.Name === value;
});
このコードは値を正しく設定しますが、コンボボックスがフォーカスを失った場合のみです。私は何をすべきか?