在AngularJS中,如何取消选中单选按钮以使所有对象变为false
In AngularJS how to uncheck a radio button to make all objects become false
我有一个数组,里面有很多"contact"对象。只有一个联系人可以是主要联系人(主要联系人:true)。
我还有一个单选按钮,可以选择哪个联系人是主要联系人。
Q: 如何使一个联系人成为主要联系人并停用所有其他联系人(主要联系人:false)?那么只有一个对象具有属性(primary:true),其余的为false?
我的例子:http://plnkr.co/edit/Y3as4SXv2ZGQSF39W8O6?p=preview
.controller('ExampleController', ['$scope',
function($scope) {
$scope.addContList = [
{
email: "q@q.com",
jobTitle: "clerk",
name: "nico2",
phone: "1",
primary: true
},
{
email: "a@a.com",
jobTitle: "director",
name: "david",
phone: "1",
primary: false
}
];
$scope.$watch('addContList', function() {
console.log('changed', JSON.stringify($scope.addContList, null, 2))
}, true)
}
]);
这是的视图
<tr ng-repeat="contact in addContList">
<td>
<label class="radio-inline">
<input type="radio" value="" name="ui_cont" ng-model="contact.primary" ng-value="true">
</label>
</td>
<td>{{ contact.name }} value = {{contact.primary}} </td>
<td>Edit</td>
<td>Delete</td>
</tr>
您希望将ngChange
事件添加到您的输入中,并在其中一个设置为true时将所有其他输入更改为false。我在这里更新了你的Plnkr:http://plnkr.co/edit/7gxI7if9nC7hAMQES1eu?p=preview
<input type="radio" value="" name="ui_cont" ng-change='changeOnPrimary(contact)' ng-model="contact.primary" ng-value="true">
然后在您的控制器中:
$scope.changeOnPrimary = function(selectedContact) {
// iterate over your whole list
angular.forEach($scope.addContList, function(contact) {
// set primary to false for all contacts excepts selected
if (selectedContact.name !== contact.name) {
contact.primary = false;
}
});
}
请注意:我比较对象的名称字段的唯一原因是没有唯一的标识符可供比较。在实际代码中,您希望与ID而不是名称字段进行比较。
您可以定义一个新的作用域属性
$scope.primary = null
然后你可以定义一个监听器
$scope.$watch("primary", function(value) {
$scope.addContList.forEach(function(contact) {
contact.primary = angular.equals(value, contact);
})
})
并且您可以在定义列表之后定义默认值
$scope.primary = $scope.addContList[0];
在html中更改中的输入行
<input type="radio" value="" name="ui_cont" ng-model="$parent.primary" ng-value="contact">
您需要使用$parent.primary
而不是primary
,因为ng-repeat
定义了一个新的子作用域。
参见http://plnkr.co/edit/5pvatBNwnrJhGzKhOIys?p=preview
相关文章:
- 多个单选按钮组相互干扰
- 是否可以禁用jquery中的单个单选按钮
- Javascript:无法获取变量中的单选按钮值
- 通过ajax到php文件获取单选按钮值
- 互斥单选按钮和相应的输入字段
- 用于选择MVC3中单选按钮值的JavaScript
- 如何获取单选按钮的多个实例的选定单选按钮值
- react testUtils模拟点击单选按钮而不触发onchange
- 当选择组中的单选按钮时,jQuery addClass
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 客户端单选按钮列表验证
- Javascript:图像与单选按钮的值不匹配
- 如何在Javascript中将单选按钮值保存到cookie中
- 单击时如何更改单选按钮的CSS
- 获取Javascript中单选按钮的true或false
- 在AngularJS中,如何取消选中单选按钮以使所有对象变为false
- 单选按钮返回false onclick
- 单选按钮onclick的条件,如果为false,不要检查
- 返回false,不取消在Chrome中单击单选按钮,当没有选择其他值
- JQuery .prop(checked,true)不将其他单选按钮设置为false