AngularJS Заменить массив целых чисел словами

Я получаю числа для жанров кино от апи. Это означает, что 1 = Боевик, 34 = Драма, 22 = Ужасы.... Я хочу отображать названия жанров вместо цифр.

{{::movie.genre_ids}}

Вывод HTML для movie.genre_ids: [1,34,22]

Должно выглядеть так: Драма-ужастик... без скобок и цифр.

У фильмов есть несколько жанров, так что это тоже должно работать.

заранее спасибо


person Karl B.    schedule 05.10.2017    source источник
comment
Это похоже на просто вопрос javascript. Как вписывается угловой?   -  person JC Ford    schedule 05.10.2017
comment
ищу угловое решение   -  person Karl B.    schedule 05.10.2017
comment
Можете ли вы также отформатировать свой вывод, чтобы он был более четким?   -  person theGleep    schedule 05.10.2017


Ответы (3)


Предполагая, что у вас есть что-то вроде этого в $scope:

$scope.genres = [];
$scope.genres[1] = 'Horror';
$scope.genres[34] = 'Action';
$scope.genres[22] = 'Drama';

$scope.movies = [
  {title: 'IT', genres: [1,22]},
  {title: 'Alien', genres: [1,34]}
]

Вы можете сделать что-то подобное в представлении

<div ng-repeat="movie in movies">
  <b>{{movie.title}}</b>
  <i ng-repeat="genre in movie.genres">{{($index > 0 ? ', ' : '') + genres[genre]}}</i>
</div>

Чтобы получить что-то подобное на странице

Оно Ужасы, Драма
Чужой Ужасы, Боевик

person JC Ford    schedule 05.10.2017

Если вы можете отформатировать сопоставление в приведенном ниже формате,

$scope.mapping = {"1": "action", "2": "horror"};

Вы можете показать вывод, используя приведенный ниже код.


var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope, $filter) {
	$scope.mapping = {"1": "action", "2": "horror"};
  $scope.api = [1,2];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller='MyController' ng-app="myApp">
    <span ng-repeat="x in api">{{mapping[x]}}&nbsp;</span>
</div>


person Naren Murali    schedule 05.10.2017
comment
могу ли я использовать это внутри моего существующего основного списка фильмов ng-repeat? где бы я разместил {{::movie.genre_ids}} ? - person Karl B.; 05.10.2017
comment
@KarlHusten Да, если переменные определены правильно, дайте мне простую скрипку с примерами данных, если у вас возникнут проблемы! так? ::mapping[movie.genre_ids] - person Naren Murali; 05.10.2017
comment
@KarlHusten Проверьте мой комментарий выше - person Naren Murali; 05.10.2017

Вы можете инициализировать один статический массив объектов, подобных этому

var movie.genre=[
    {1:'Horror'},
    {34:'Action'},
    {22:'Drama'},
    {56:'Comedy'},
    .....
]

В вашем html используйте angular:

<span ng-repeat="id in movie.genre_ids">
{{movie.genre[d]}}
</span>
person Varun Sukheja    schedule 05.10.2017