如何将 ids 转换为 ng-option angular 中的对象?

How to translate ids to objects in ng-option angular?

我有一个 id 数组,我需要使用这个数组作为我在 select 中的 ng-option 指令的源。我当然可以在我的集合中找到具有相应 id 的对象并创建一个对象数组来使用它而不是 id 数组,但我想知道有没有办法以某种方式动态地做到这一点?就像将函数设置为 ng-option 的源?

您可以借助 ngOptions 指令表达式中的 id 过滤来完成此操作:

angular.module('demo', []).controller('MainCtrl', function($scope) {
    $scope.ids = [1, 4];
    $scope.objects = [
        {id: 1, name: 'One'},
        {id: 2, name: 'Two'},
        {id: 4, name: 'Four'}
    ];
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script>
<div ng-app="demo" ng-controller="MainCtrl">

    <pre>{{objects}}</pre>
    <pre>{{ids}}</pre>

    <select ng-model="model" 
            ng-options="id as (objects | filter:{id: id})[0].name for id in ids">
    </select>

    {{model}}

</div>