AngularJS同ng-model绑定的单选框未自动选中问题求助
解决AngularJS单选框无法根据布尔值自动选中的问题
看起来你遇到的核心问题是数据类型不匹配导致的单选框绑定失效,让我帮你拆解并解决这个问题:
你的editClientData.isActive是布尔类型(true/false),但单选框的value属性设置的是字符串'1'和'0'。AngularJS的ng-model在匹配值时会做严格类型检查,布尔值true和字符串'1'并不相等,所以模态框弹出时单选框不会自动选中对应选项。
这里有两种简单的解决方案,你可以根据需求选择:
方案1:使用ng-value绑定布尔值(推荐)
原生value属性只能存储字符串,我们可以用AngularJS的ng-value指令直接绑定布尔值,让它和ng-model的类型完全匹配。修改你的Jade单选框代码如下:
.form-group span.control-label Status span.text-danger * | input#Active(type='radio', ng-value='true', ng-model='editClientData.isActive') span(for='Active') Active | input#Inactive(type='radio', ng-value='false', ng-model='editClientData.isActive') span(for='Inactive') Block
这样当editClientData.isActive为true时,Active单选框会自动选中;为false时,Block单选框自动选中,完全符合你的预期。
方案2:在赋值时转换数据类型
如果你想保留单选框的value='1'和value='0',可以在把客户端数据赋值给editClientData的时候,将布尔值转换成对应的字符串。需要确保你的editClient函数做了这个转换:
$scope.editClient = function(client) { // 复制客户端数据,并将布尔类型的isActive转换为字符串 $scope.editClientData = angular.copy(client); $scope.editClientData.isActive = client.isActive ? '1' : '0'; };
额外注意点
请确认你的editClient函数确实把选中的admin对象正确赋值给了$scope.editClientData——从你提供的代码里没看到这个函数的实现,这也是可能导致绑定失效的潜在原因哦。
内容的提问来源于stack exchange,提问作者Sameer
相关产品推荐
相关产品推荐

