AngularJS用对象填充ng-options



如果我使用 ng-options,我将如何填充选择?

所以我有类似的东西,

<select ng-model="option.model"
ng-options="option as (option.firstVal + ' ' + option.secondVal) 
for option in options>
<option value="">default</option>

每个选项中的值是整个对象,ng-option 正在经历对象的集合。

我需要值是整个对象才能成为值,所以我不能使用 ng-repeat。当我尝试将模型分配给对象本身时,

$scope.option.model = option; //option is made elsewhere

它不起作用。它将使用默认选项填充字段。

[编辑1] 在此示例中,下拉列表应选择为 John Rambo,但它将转到默认值

jsfiddle.net/brzxn8yt/1

你只需要使用ng-options的track by属性。 在下面的示例中,我通过 ID 属性跟踪对象。

注意:请在对象中使用唯一属性(例如:id 将是完美的,因为没有重复项,但 actor 属性有重复项,并且会抛出和错误(。

var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function ($scope) {
$scope.people = [
{ id: 1, first: 'John', last: 'Rambo', actor: 'Silvester' },
{ id: 2, first: 'Rocky', last: 'Balboa', actor: 'Silvester' },
{ id: 3, first: 'John', last: 'Kimble', actor: 'Arnold' },
{ id: 4, first: 'Ben', last: 'Richards', actor: 'Arnold' }
];

$scope.selectedPerson = { id: 1, first: 'John', last: 'Rambo', actor: 'Silvester' }; // a person object

});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp">
<fieldset ng-controller="FirstCtrl">
<select 
ng-options="item as item.first + ' ' + item.last for item in people track by item.id"
ng-model="selectedPerson">
<option value="">Default</option>
</select>
{{ selectedPerson }}
</fieldset>
</div>

参考:

ng-options

最新更新