У меня есть массив объектов с наблюдаемым свойством, связанным с группой переключателей. Наблюдаемое свойство может иметь только следующие значения ['Primary', 'Secondary', 'Occasional', 'none']Как сделать один элемент в наблюдаемом массиве изменить другой элемент в этом массиве
Вот HTML.
<!--ko foreach: allDriversForPolicy-->
<div class="col-md-2">
<a href="#" class="thumbnail">
<div class="">
<label><input type="radio" value="Primary" data-bind="checked: vehicleDriverType, attr: {name: id}"/>Primary</label>
<label><input type="radio" value="Secondary" data-bind="checked: vehicleDriverType, attr: {name: id}" />Secondary</label>
<label><input type="radio" value="Ocasional" data-bind="checked: vehicleDriverType, attr: {name: id}" />Ocasional</label>
<label><input type="radio" value="" data-bind="checked: vehicleDriverType, attr: {name: id}" />None</label>
</div>
</a>
</div>
<!--/ko-->
И вот JavaScript, чтобы запустить его.
var SimpleListModel = function() {
this.allDriversForPolicy = ko.observableArray([
{'id': 'abe', 'vehicleDriverType': 'Primary'},
{'id': 'bob', 'vehicleDriverType': 'Secondary'},
{'id': 'charlie', 'vehicleDriverType': ''}
]);
};
ko.applyBindings(new SimpleListModel());
jsfiddle is here. Морщинка, с которой я сталкиваюсь, является дополнительным требованием, что из всех объектов может быть только один первичный, поэтому мне бы хотелось, чтобы поведение было, если Primary выбрано, а затем пройти через массив и переключить любые объекты с помощью свойства наблюдаемого установите «Первичный» на «Вторичный».
Как это сделать?
Пожалуйста, удалите любой код * не *, имеющий отношение к вопросу, и * добавьте * достаточно кода для воспроизведения вашего сценария. – Jeroen
Хорошо, я обрезал его. Это воспроизведет основы того, что у меня есть сейчас. – Maleki
Не могли бы вы добавить JS, необходимый для создания полного воспроизведения? Например, см. [Этот последний ответ, который я опубликовал] (http://stackoverflow.com/a/35547107/419956), для руководства см. [Mcve]. – Jeroen