我环顾四周,看看是否有人回答了这个问题,看来他们没有回答。我想使用一个对象而不是字符串或整数作为单选按钮的值。这可能吗?好像不是,因为标签md-radio-button
在识别对象而不是字符串或整数值时遇到麻烦。我可以看到页面加载后它可以工作,我选择了一些东西,但是我不知道如何检查单选按钮(如果该值已经存在)。您可以在此处看到一个非常简单的演示:https://codepen.io/anon/pen/ZmjrLN
我已经尝试class="md-checked"
来查看是否可行,但没有成功。我已经尝试过ng-checked="selectedStatus.Name == status.Name"
,但是它也不起作用。实际上ng-checked="true"
也不起作用。
我认为md-radio-button
可以用于对象!
---澄清编辑---
从下面的答案中引用代码源中的代码,如果我在$scope.statuses
中使用相同的对象来填充$scope.selectedStatus
,则它的确选择了加载时正确的单选按钮。但是,在现实世界中,$scope.selectedStatus
填充有来自服务器的实际状态,而$scope.statuses
也填充有相同的调用。它们是相同的,但是2个不同的对象。
简而言之,我仍然要检查正确的对象,即使对象不完全相同,也应将它们视为相同,因为它们是相同的。
答案 0 :(得分:0)
在比较对象时,ng-checked会查看被检查的对象是同一对象还是引用,而不检查对象的内容。因此,要设置选中/选中的单选按钮,请使该值引用该对象。这是您的代码罐Javascript更新的示例:
angular
.module('BlankApp')
.controller('AppController', function($scope) {
$scope.statuses = [
{id: 1, Name: 'Active'},
{id: 2, Name: 'Dormant'}
];
$scope.selectedStatus = $scope.statuses[0]; // reference the object directly
});
或者如果该值设置在范围之外并且我们必须进行比较,那么我们可以手动进行比较,然后设置selectedStatus通过找到正确的对象并进行分配。
angular
.module('BlankApp')
.controller('AppController', function($scope) {
$scope.statuses = [
{id: 1, Name: 'Active'},
{id: 2, Name: 'Dormant'}
];
$scope.selectedStatus = {id: 1, Name: 'Active'};
// Find the index of the selected that matches on id
let i = $scope.statuses.findIndex((val) => {
return val.id = $scope.selectedStatus.id;
});
$scope.selectedStatus = $scope.statuses[i]
});