У меня есть массив Book
-objects, каждый из которых имеет boolean
свойство Favorite
. Только одна из книг имеет параметр "Избранное", равный true
.
Я показываю эти книги с помощью ng-repeat
, и я хочу, чтобы вы могли установить любимую книгу с помощью переключателей. Однако, несмотря на то, что при загрузке страницы выбран правильный переключатель, модель не обновляет логические значения при выборе другого переключателя.
Вот мой код:
<ul>
<li ng-repeat="book in vm.Books">
{{book.Name}}
<input name="book" type="radio" ng-model="book.Favorite" ng-value="book.Favorite" />
</li>
<ul>
Как обновить модель с помощью Favorite
-value на основе зарегистрированного переключателя?
Следующее близко, но не будет задано book.Favorite
to false
когда вы выбираете другой (который, как я предполагаю, вы хотите?):
<li ng-repeat="book in vm.Books">
{{book.Name}}
<input name="book" type="radio" ng-model="book.Favorite" ng-value="true">
</li>
Я бы просто пошел следующим образом:
<li ng-repeat="book in vm.Books">
{{book.Name}}
<input type="radio" ng-click="vm.setFavorite(book)" ng-checked="book.Favorite">
</li>
А также:
vm.setFavorite = function(book) {
vm.Books.forEach(function(b) {
b.Favorite = book === b;
});
};
name="book"
поскольку это не должно быть необходимо.ng-value="{{expression}}"
не должно быть динамическим значением из модели, а должно иметь фиксированное уникальное значение, напримерbook.uniqueId