角度无线电输入在加载时取消选中,具有ng值

时间:2016-11-21 16:17:32

标签: javascript angularjs

我使用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在控制器中设置它会检查无线电输入吗?

2 个答案:

答案 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">