Ни один из ответов на момент написания статьи на самом деле не представляет собой работающее решение, так что вот одно.
Не разбрасывайте директивы ng-model
между различными option
элементами, это не нужно.
Вы можете достичь желаемого, используя ng-options
для перечисления всех ваших выборов, один ng-model
для отслеживания выбранной опции и ng-change
для применения значений, как вы описали (например, 1
навыбранный ключ, 0
для всего остального).
Я предположил, что у вас есть требование сохранить структуру detail
как есть.Если это можно изменить, то я бы рекомендовал ассоциировать каждый ярлык с каждым соответствующим building_type_
, чтобы все было вместе.
См. Ниже.
angular
.module('app', [])
.controller('PredictCtrl', function () {
this.selectedDetail = null;
this.detail = {
building_type_AP: 0,
building_type_GC: 0,
building_type_IF: 0,
building_type_IH: 0,
};
this.labels = {
building_type_AP: 'Apartment',
building_type_GC: 'Independent House / Villa',
building_type_IF: 'Independent Floor / Builder\'s Floor',
building_type_IH: 'Gated Community Villa',
};
this.changeDetail = function () {
for (var key in this.detail) {
this.detail[key] = +(this.selectedDetail === key);
}
};
});
{{ PredictCtrl.detail | json }}