2016-11-21 2 views
1

Ich benutze ng-Wert, um einen Radioeingangswert für ein Objekt zu setzen. Wenn der Wert also mit dem ng-Modellobjekt übereinstimmt, sollte das Radio überprüft werden. Hier ist ein Beispiel und Plünderer.Angular Radio Eingang beim Laden mit ng-Wert deaktiviert

<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

Es scheint gut zu funktionieren, wenn die Radio-Buttons zu klicken, als die modelObj auf das entsprechende Objekt aktualisiert wird. Aber warum wird der dritte Funkeingang (objThree) nicht auf Last überprüft? Ich dachte, weil $ scope.ObjThree ist gleich $ scope.modeObj wie in der Steuerung festgelegt, dass es die Radio-Eingabe überprüfen würde?

Antwort

1

Arbeitsbeispiel: https://plnkr.co/edit/J3QQM0z0nSC9KulHzQGI?p=preview

Versuchen $scope.modelObj = $scope.ObjThree;. Dadurch wird die Referenz $scope.modelObj dem Objekt ObjThree zugewiesen und nicht nur ein neues Objekt mit einer neuen Referenz erstellt, die zufällig dieselben Eigenschaften aufweist. Im Allgemeinen verwendet JavaScript referenzielle Gleichheit zum Vergleichen von Objekten und verwendet nur die Wertegleichheit, um elementare Datentypen wie Zahlen und Zeichenfolgen zu vergleichen.

0

Sie können in ngInit setzen:

ng-init="modelObj = ObjThree" 

werden:

<form name="myForm" ng-controller="testController" ng-init="modelObj = ObjThree">