2016-11-21 5 views
1

ng-valueを使用してオブジェクトに無線入力値を設定していますので、値がng-modelオブジェクトと一致すると無線がチェックされます。ここに例とプランカがあります。ng-valueを持つ負荷で角度ラジオ入力がチェックされていません

<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は、関連するオブジェクトに更新されたように、正常に動作するようです。しかし、なぜ3番目の無線入力(objThree)がロード時にチェックされていないのですか?私は$ scope.Objthreeがコントローラに設定されている$ scope.modeObjと等しいので、ラジオ入力をチェックすると思ったのですが?

答えて

1

の作業例は:https://plnkr.co/edit/J3QQM0z0nSC9KulHzQGI?p=preview

$scope.modelObj = $scope.ObjThree;を試してみてください。これにより、同じプロパティーを持つ新しい参照で新しいオブジェクトを作成するのではなく、$scope.modelObjのオブジェクト参照をObjThreeオブジェクトと同じに設定します。一般に、JavaScriptは参照の等価性を使用してオブジェクトを比較し、値の等価性のみを使用して数値や文字列などの基本データ型を比較します。

0

あなたはできるngInitに設定するには:

ng-init="modelObj = ObjThree" 

は次のようになります。

<form name="myForm" ng-controller="testController" ng-init="modelObj = ObjThree"> 
関連する問題