że mamy zbiór projektów narażonych poprzez usługę projektu:Jak powiązać złożone obiekty z radiami i polami wyboru w AngularJS?
{ id: '123', name: 'Yeoman', watchers: '1233', ... }
{ id: '123', name: 'Grunt', watchers: '4343', ... }
Następnie mamy formularz, aby wybrać swój ulubiony projekt:
Select favorite project:
%label.radio(ng-repeat="project in Project.query()")
%input(type="radio" ng-model="data.favoriteProject" value="{{project.id}}") {{project.name}}
Ustawia choices.favoriteProject wartości id wybranego projektu. Często musimy uzyskać dostęp do powiązanego obiektu, a nie tylko id:
John's favorite project:
{{Project.get(data.favoriteProject).name}}
Co szukam jest sposobem związania radia i wyboru prosto do samego obiektu, a nie identyfikator, więc mogliśmy zamiast tego można uzyskać
John's favorite project:
{{data.favoriteProject.name}}
. Jest to możliwe dzięki wybraniu dyrektywy za pomocą opcji ng, ale jak możemy to zrobić z radiami i polami wyboru? Nadal chciałbym użyć identyfikatorów do dopasowania zamiast referencji, jeśli to możliwe.
celu wyjaśnienia, oto przykład co szukam
Select favorite project:
%label.radio(ng-repeat="project in Project.query()")
%input(type="radio" ng-model="data.favoriteProject" value="{{project}}" ng-match="id") {{project.name}}
on mówi: „Proszę związać data.favoriteProject do rzeczywistego przedmiotu projektu i użyć identyfikatora, by sprawdzić, czy są one zgodne (zamiast referencji) ".
Dziękujemy! Naprawdę podoba mi się to rozwiązanie. To proste, ale działa zgrabnie! Pozostawiam pytanie otwarte na inne rozwiązania na teraz. Problem polega na tym, że istnieje duplikacja danych (identyfikator) i musimy sami zarządzać ustawianiem wartości. – randomguy
Dlaczego warto używać projektów [$ index] zamiast tylko obiektu projektu? – randomguy
Dokonałem tego refaktoryzacji w jsFiddle, ale zapomniałem zaktualizować post. Dzięki! –