我正在使用电影API,在Angular服务中,我有两个电话。一个用于电影列表,一个用于流派列表。在控制器中我将该数组分配给' $ scope.movies'和' $ scope.genres'。电影数组有嵌套数组' genres_id []'。 Id in' movies.genres_id'与genres数组中的id相同。类型数组还具有属性&gen ;. genres.name'。现在我的问题是它可以将这两个数组与id链接,如果它是如何?在我的HTML中我有lopp通过电影阵列
ng-repeat="movie in movies"
现在我想从流派名称中显示电影阵列和流派的标题。这可能吗?我希望我写这个可以理解,谢谢
电影列表
流派列表
答案 0 :(得分:1)
这必须有效(检查拼写错误)。
首先将此功能添加到您的控制器:
/**
* Returns the *first* Object in an Array with property with a given value
* @param array: the array in which we search
* @param property: the name of the property to search for
* @param value: the value that the given property must have
* @returns {*}
*/
$scope.getObjectWithPropertyValue = function (array, property, value) {
for (var i = 0; i < array.length; i++) {
if (array[i][property] == value) {
return array[i];
}
}
return null;
}
你也可以在其他情况下使用它。
接下来在您的视图中,您可以执行以下操作:
<p ng-repeat="movie in movies">
<h3>{{movie.original_name}}</h3>
<span>{{movie.overview}}</span>
<h5>Genres</h5>
<ul>
<li ng-repeat="gen_id in movie.genre_ids">
{{getObjectWithPropertyValue(genres, 'id', gen_id).name}}
</li>
</ul>
</p>
另外,如果您提供实际数据集而不仅仅是图像,我可以在jsfiddle中为您提供一个工作示例。
答案 1 :(得分:0)
这不一定是关于嵌套数组。
从电影中显示标题:
{{movie.title}}
显示流派名称:
{{genre[movie.genre_id].name}}
正如您所注意到的,您最好的选择是将流派数组转换为由电影 genre_id 索引的对象。否则你必须定义一个函数getGenre
,它返回给定电影的类型 genre_id :
{{getGenre(movie.genre_id).name}} // prefer the solution above so as to
// not evaluate the function on every digest
答案 2 :(得分:0)
您可以使用http://underscorejs.org/#find在控制器中查找正确的类型。
例如:var item = _.find($ scope.genres,function(genre){genre.id === movie.id});