<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的选择列表中显示所选文本的最简单方法是什么?或者更好的是,我如何获得所选的源对象?
我找到的解决方案是在select上使用对象作为ng-model,但在这种情况下我不能这样做,我需要在我的定义模型中保存SourceId。
答案 0 :(得分:0)
您可以选择整个对象,然后显示所需的属性。
在以下代码中,我将source.Id as...
更改为source as...
:
<select ng-options='source as (source.Author + " " + source.Desc) for source in sources'
ng-model="definition">
</select>
您现在可以显示所需的属性:
<p>{{definition.Author}} {{definition.Desc}} {{definition.Year}}</p>
注意我也将definition.SourceId
更改为definition
。
答案 1 :(得分:-1)
我终于找到了让它发挥作用的方法。我的模型现在是definition._source,我更新了我的定义.SourceId on change。
<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];
}
}