2017-01-18 11 views
-1
<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> 

ng-modelがIDである選択リストから選択したテキストを表示する最も簡単な方法は何ですか?または、より良い方法で、選択したソースオブジェクトを取得するにはどうすればよいですか?AngularJS:IDでバインドされたリストを選択し、選択したテキストを取得する方法は?

私が見つけた解決策は、選択肢のngモデルとしてオブジェクトを使用することですが、この場合は実行できません.SourceIdを定義モデルに保存する必要があります。

答えて

-1

私はついにそれを動作させる方法を見つけました。私のモデルは現在definition._sourceであり、私は定義を更新します。

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

私の初期値を持つために、ソースをフィルタリングして選択したソースを取得するng-repeatにコントローラを追加しました。

function definitionController($scope) { 
    var source = $filter("filter")($scope.sources, { Id: $scope.definition.SourceId }, true); 
    if (source.length == 1) { 
     $scope.definition._source = source[0]; 
    } 
} 
0

オブジェクト全体を選択し、必要なプロパティを表示することができます。次のコードで

は、私が変更 source.Id as... source as...に:私も definitiondefinition.SourceIdを変更

<p>{{definition.Author}} {{definition.Desc}} {{definition.Year}}</p> 

注:

<select ng-options='source as (source.Author + " " + source.Desc) for source in sources' 
     ng-model="definition"> 
</select> 

あなたは今、あなたがしたいプロパティを表示することができます。

+0

今、私は_definition.SourceId_の初期選択項目を持っていません。 – user2639580

+0

@ user2639580あなたは 'definition.SourceId'でそれにアクセスすることができます。 'SourceId'はあなたの' definition'オブジェクトのプロパティです。 – Mistalis

+0

つまり、_SourceId_と_source_の間に_definition_にリンクがないため、ページが読み込まれると、私のリストに選択されたアイテムがありません。 – user2639580

関連する問題