我使用ng-value为对象设置无线电输入值,因此当值与ng-model对象匹配时,它应该导致检查无线电。这是一个例子和掠夺者。
<script>
angular.module('test', [])
.controller('testController', ['$scope', function($scope) {
$scope.Obj = {
"id": "1",
"value": "green"
};
$scope.ObjTwo = {
"id": "2",
"value": "red"
};
$scope.ObjThree = {
"id": "3",
"value": "blue"
};
$scope.modelObj = {
"id": "3",
"value": "blue"
};
}]);
</script>
<form name="myForm" ng-controller="testController">
<label>
<input type="radio" ng-model="modelObj" ng-value="Obj">
{{Obj}}
</label><br/>
<label>
<input type="radio" ng-model="modelObj" ng-value="ObjTwo">
{{ObjTwo}}
</label><br/>
<label>
<input type="radio" ng-model="modelObj" ng-value="ObjThree">
{{ObjThree}}
</label><br/>
color = {{modelObj}}<br/>
https://plnkr.co/edit/aAISUTEqdGkpVrEJt0uq?p=preview
当modelObj更新为相关对象时,单击单选按钮似乎工作正常。但为什么第三个无线电输入(objThree)没有加载检查?我想因为$ scope.Objthree等于$ scope.modeObj在控制器中设置它会检查无线电输入吗?
答案 0 :(得分:1)
工作示例:https://plnkr.co/edit/J3QQM0z0nSC9KulHzQGI?p=preview
试试$scope.modelObj = $scope.ObjThree;
。这将设置$scope.modelObj
的引用等于ObjThree
对象,而不是仅使用恰好具有相同属性的新引用创建新对象。通常,JavaScript使用引用相等来比较对象,并仅使用值相等来比较基本数据类型,例如数字和字符串。
答案 1 :(得分:0)
您可以设置ngInit:
ng-init="modelObj = ObjThree"
可能是:
<form name="myForm" ng-controller="testController" ng-init="modelObj = ObjThree">