动态过滤器值以 ng 重复形式表示



是否可以通过以下方式对过滤器变量使用动态值:

<div ng-repeat="playlist in playlists" >
    <a class="view-detail" ng-href="#/playlist/{{playlist.id}}">{{playlist.playlistName}}</a>
    <a ng-href="#/playlist/{{playlist.id}}">check out this playlist >></a>
    <span ng-repeat="genre in genres | filter:{name:'playlist.playlistGenre'}">
        <img ng-src="{{genre.image}}">  
    </span>
</div>

因此,它是重复中的重复 - 它不会像这样显示,但是如果我硬编码过滤器变量将返回的值之一,那么它可以工作 -

还是我应该重新考虑我的方法——

非常感谢

filter:{name:'playlist.playlistGenre'}

它查找名称为字符串"playlist.playlistGenre"的流派。如果我理解正确,您想要的是显示名称与playlist的字段playlistGenre具有相同值的流派。

所以你想要

filter:{name:playlist.playlistGenre}

也就是说,这是非常低效的。我想有一种流派有一个给定的名字。因此,与其循环遍历每个播放列表的所有流派,不如直接在播放列表中设置流派,或者至少使用包含每个名称流派的哈希:

$scope.genresByName = {};
genres.forEach(function(genre) {
    $scope.genresByName[genre.name] = genre;
});

然后

<div ng-repeat="playlist in playlists" >
    <a class="view-detail" ng-href="#/playlist/{{playlist.id}}">{{playlist.playlistName}}</a>
    <a ng-href="#/playlist/{{playlist.id}}">check out this playlist >></a>
    <span><img ng-src="{{genresByName[playlist.playlistGenre].image}}"></span>
</div>

最新更新