Ich weiß, dass es bereits mehrere ähnliche Themen gibt, aber ich habe keine gefunden, die wirklich zu meinem Problem passen.Kontrollkästchen mit AngularJS basierend auf zwei Objekt-Arrays anzeigen
Beim Öffnen meiner AngularJS App/Website lade ich zwei Arrays von Objekten (beide vom selben Typ). Eine Liste enthält alle möglichen Werte (hier Quellen genannt) und die andere Liste ist eine Auswahl von Elementen aus der ersten.
Mein Ziel ist, alle Quellen als Kontrollkästchen anzuzeigen. Die aus der zweiten Liste müssen vorausgewählt werden, der Rest nicht. Jetzt kann der Benutzer Ankreuzfelder an-/abwählen. Wenn dies der Fall ist, muss ich den Server informieren (mit der source.id).
Was ich habe bisher:
exampleApp.controller('testController', [ '$scope', '$http', function($scope, $http) {
$scope.sources = [];
$scope.selectedSources = [];
$scope.changeSource = function(source) {...};
})
und
<div ng-repeat="source in sources">
<input
type="checkbox"
name="source.name"
value="{{source.id}}"
ng-model="??"
ng-change="changeSource(source.id)"
> {{source.name}}
</div>
Was ich nicht herausfinden kann, ist, wie ich ng-Modell bekommen, die richtigen Kontrollkästchen vorzuwählen und wie das bekommen neue (und alte) Werte zu changeSource(). Gibt es eine elegante Art, das zu tun?
Beispiel (Pseudo-Code nur):
Sources = [{id=1, name=test1},{id=2, name=test2}, ...]
SelectedSources = [{id=2, name=test2}]
Nun, was ich brauche sind Kontrollkästchen wie folgt aus:
[ ] test1 [x] test2
wo alle Elemente aus Quellen Kontrollkästchen und die, die von selectedsources sind vorausgewählt. Änderungen der Auswahl können in ausgewählten Quellen (als Objekte) gespeichert werden und müssen meine changeSource() -Funktion auslösen, damit ich meinen Server informieren kann.
Der einfachste Weg, dies zu bewältigen, ist die Verwendung eines einzelnen Arrays mit einem zusätzlichen Feld für jedes Element, das dem ausgewählten Status entspricht. Ist das etwas, das in deiner Situation funktionieren würde? – Claies