<div ng-repeat="definition in definitions">
...
<select ng-options="source.Id as (source.Author + " " + source.Desc) for source in sources" ng-model="definition.SourceId"></select>
//TODO:
<p>{{ SELECTED TEXT HERE }}</p>
<p>{{ selectedSource.Author + " " + selectedSource.Desc + " " + selectedSource.Year}}</p>
</div>
Jaki jest najłatwiejszy sposób na pokazanie zaznaczonego tekstu z listy wyboru, gdzie identyfikator modelu to identyfikator? Lub jeszcze lepiej, jak mogę uzyskać wybrany obiekt źródłowy?
Rozwiązaniem, które znalazłem, jest użycie obiektu jako modelu ng na zaznaczeniu, ale nie mogę tego zrobić w tym przypadku, muszę zapisać SourceId w moim modelu definicji.
Odpowiedzi:
0 dla odpowiedzi № 1Możesz wybrać cały obiekt, a następnie pokazać żądaną właściwość.
W poniższym kodzie zmieniam source.Id as...
do source as...
:
<select ng-options="source as (source.Author + " " + source.Desc) for source in sources"
ng-model="definition">
</select>
Możesz teraz wyświetlić żądaną właściwość:
<p>{{definition.Author}} {{definition.Desc}} {{definition.Year}}</p>
Uwaga Zmieniłem również definition.SourceId
do definition
.
-1 dla odpowiedzi № 2
W końcu znalazłem sposób, aby to zadziałało. Mój model to teraz definicja. Źródło i aktualizuję definicję. Źródło przy zmianie.
<div ng-repeat="definition in definitions" ng-controller="definitionController">
...
<select ng-change="definition.SourceId = definition._source.Id"
ng-model="definition._source"
ng-options="source as (source.Author + " " + source.Desc) for source in sources"></select>
</div>
Aby uzyskać moją wartość początkową, dodałem kontroler do mojego powtórzenia ng, w którym filtruję źródła, aby uzyskać wybrane źródło.
function definitionController($scope) {
var source = $filter("filter")($scope.sources, { Id: $scope.definition.SourceId }, true);
if (source.length == 1) {
$scope.definition._source = source[0];
}
}