AngularJS - Ng-repeat 带有单选按钮和布尔值
AngularJS - Ng-repeat with radio buttons and boolean value
我有一个 Book
-objects 数组,每个数组都有 boolean
属性 Favorite
。只有一本书的收藏夹设置为 true
。
我正在使用 ng-repeat
显示这些书籍,我希望能够使用单选按钮设置最喜欢的书籍。但是,即使在页面加载时 select 编辑了正确的单选按钮,当我 select 一个不同的单选按钮时,模型也不会更新布尔值。
这是我的代码:
<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
值更新模型?
以下是接近的,但当您选择另一个(我假设您想要?)时,不会将 book.Favorite
设置为 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;
});
};
我有一个 Book
-objects 数组,每个数组都有 boolean
属性 Favorite
。只有一本书的收藏夹设置为 true
。
我正在使用 ng-repeat
显示这些书籍,我希望能够使用单选按钮设置最喜欢的书籍。但是,即使在页面加载时 select 编辑了正确的单选按钮,当我 select 一个不同的单选按钮时,模型也不会更新布尔值。
这是我的代码:
<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
值更新模型?
以下是接近的,但当您选择另一个(我假设您想要?)时,不会将 book.Favorite
设置为 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;
});
};