Я пытаюсь заполнить значение по умолчанию для зависимого выпадающего списка, используя нокаут.Выпадающий каскад выпадающего списка не обновляется
Когда значения закодированы, они работают, но мне нужно получить значения из запроса ajax, а затем второй вариант выпадающего меню не обновляется. Значение 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>
Есть ли что-то особенное, что должно быть сделано, когда параметры получаются из AJAX?
Большое вам приятель. Я никогда не понимаю, в каком случае я должен использовать привязку valueAllowUnset до сих пор. –