ノックアウトを使用して依存ドロップダウンのデフォルト値を設定しようとしています。ノックアウトドロップダウンカスケードオプションが更新されない
値がharcodedのときは機能しますが、ajaxリクエストから値を取得する必要があり、2番目のドロップダウンオプションは更新されません。値self.selectedStateは更新されますが、私はすでにオプションが設定されていないので、selectの値はバインドされていないと思います。これは、これまでの私のコードです:
function myViewModel(country, state) {
\t var self = this;
self.selectedCountry = ko.observable();
\t self.selectedState = ko.observable();
self.availableCountries = ko.observableArray([
\t {
\t \t id: 1, name: 'United States', states: [
\t \t \t \t { id: 1, name: 'Alabama' },
{ id: 2, name: 'California' },
\t \t \t ]
\t \t },
\t \t {
\t \t \t id: 2, name: 'Canada', states: [
\t \t \t \t { id: 53, name: 'Alberta' },
\t \t \t ]
\t \t }
\t ]);
self.availableStates = ko.observableArray([]);
\t
self.selectedCountry.subscribe(function() {
\t \t self.availableStates([]);
\t \t for (var i = 0; i < self.availableCountries().length; i++) {
\t \t \t if (self.availableCountries()[i].id == self.selectedCountry()) {
\t \t \t \t self.availableStates(self.availableCountries()[i].states);
\t \t \t \t break;
\t \t \t }
\t \t }
\t });
self.selectedCountry(1).selectedState(2);
}
var viewModel = new myViewModel();
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<select data-bind="options: availableCountries, optionsText: 'name', optionsValue: 'id', optionsCaption: 'Select a country...',
value: selectedCountry"></select>
<select data-bind="options: availableStates, optionsText: 'name',optionsValue: 'id', value: selectedState, visible: availableStates().length > 0" style="display:none"></select>
はオプションがアヤックスから得られた場合に行われる必要がある特別なものはありますか?
ありがとうございました。私は今までにそのvalueAllowUnsetバインドをどのような場合に使うべきかわかりません。 –