/ / AngularJS: Wybierz listę powiązaną z identyfikatorem, jak uzyskać zaznaczony tekst? - angularjs

AngularJS: Wybierz listę związaną przez id, jak uzyskać wybrany tekst? - Angularjs

<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 № 1

Moż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];
}
}