Ich habe ein Array von Benutzern in der Steuerung der Komponente. Ich habe versucht, es mit der ngRepeat-Direktive zu drucken. Es ist folgende Fehler im Endergebnis:Fehler bei der Verwendung von ngRepeat. Kontrollkästchen und Optionsfelder falsch markieren
- Nach Array von Benutzern sollte es mit karierten
active
(zweiten) der einzige sein. - Es sollte das zweite Optionsfeld anstelle des dritten aktiviert sein.
Ich habe die folgende Liste der Benutzer Objekte:
$scope.users = [
{
id: 1,
name: 'John',
birthday: '06.07.2008',
city: 'Budapest',
active: false,
boss: false
},
{
id: 2,
name: 'Mary',
birthday: '01.02.2003',
city: 'Berlin',
active: true,
boss: true
},
{
id: 3,
name: 'James',
birthday: '04.05.2006',
city: 'Vienna',
active: false,
boss: false
}
];
Funktionen, die beide Zustände der einzelnen Benutzer überprüfen:
$scope.isActive = function (id) {
return $scope.users[id].active;
}
$scope.isBoss = function (id) {
console.log(id);
return $scope.users[id].boss;
}
Die eigentliche Vorlage (Ansicht):
<tbody>
<div>
<tr ng-click="goToProfile(user.id)" ng-repeat="user in users">
<td>{{user.id}}</td>
<td>{{user.name}}</td>
<td>{{user.birthday}}</td>
<td>{{user.city}}</td>
<td>
<input type="checkbox" name="active" ng-checked="{ checked: isActive($index) }">
<h1>{{isActive($index)}}</h1>
</td>
<td>
<input type="radio" name="boss" ng-checked="{ checked: isBoss($index) }">
<h1>{{isBoss($index)}}</h1>
</td>
</tr>
</div>
</tbody>
Ich habe d ein paar Testdrucke, um sicherzustellen, dass die benötigten Felder korrekt gelesen werden. Das tatsächliche Ergebnis können Sie auf dem Screenshot und im Code sehen. Danke im Voraus!
Ich habe noch nie zuvor Ihre Verwendung von ng-check gesehen. Wenn man sich die Dokumentation anschaut ["Setzt das überprüfte Attribut auf dem Element, wenn der Ausdruck innerhalb von ngChecked truthy ist."] (Https://docs.angularjs.org/api/ng/directive/ngChecked), nehme ich an, dass Sie nicht sollten t haben Sie ein Objekt als Ausdruck, nur Ihren Funktionsaufruf. Dann würden die Optionsschaltflächen nicht alle überprüft werden, da es das Verhalten von Optionsfeldern ist, nur eine Gruppe gleichzeitig prüfen zu lassen. – raichu
@raichu Ich kenne das tatsächliche Verhalten der Radio-Taste Eingaben. Lesen Sie zuerst die Frage. Auch Ihre Antwort löst das Problem. Erstellen Sie eine neue Antwort auf die Frage, damit ich sie als richtig markieren kann. –
Ich würde eckigen tun seine Arbeit wie in @ atcastroviejo die Antwort. – raichu