有没有办法重新映射使用ng-repeat迭代的对象的键值?

时间:2016-02-09 22:08:48

标签: javascript angularjs angularjs-ng-repeat ng-repeat soundmanager2

我正在使用angularjs-soundmanager2,并且对象数组必须符合此对象

{id: n, title: 'Title', artist: 'Artist', url: 'URL'}

我正在访问一个给我这个对象的远程API

{id: n, filename: 'URL', title: 'Title'}

我想要做的是重新映射后一个对象以符合前者。我尝试在ng-repeat中使用过滤器,但是如果没有迭代中止似乎没有产生结果(angular会给我这个错误[$rootScope:infdig] 10 $digest() iterations reached. Aborting!)。

app.filter('mapAudio', function() {
    return function(items, field) {
        var filtered = [];

        angular.forEach(items, function(item) {
            filtered.push({id: item.id, title: item.title, artist: '', url: item.filename});
        });

        return filtered;
    };
});

在HTML方面:

<a ng-repeat="sample in selected.audio | mapAudio" href="#" class="list-group-item">{{sample.title}}</a>

1 个答案:

答案 0 :(得分:2)

为什么不更新源列表?

<a ng-repeat="sample in getFullModels(selected.audio) | mapAudio" href="#" class="list-group-item">{{sample.title}}</a>

#getFullModels必须编码才能返回完整的模型表示。