如何获得角JS模板中的相关对象?
问题描述:
应该指出的是,我对Angular很陌生。如何获得角JS模板中的相关对象?
我有以下的JSON我从Django的REST框架得到:
API /电影/ 1
{
"id": 1,
"name": "Mr & Mrs Smith",
"actors": [
1,
2,
]
}
API /演员/ 1
{
"id": 1,
"name": "Angelina Jolie",
}
API /演员/ 2
{
"id": 2,
"name": "Brad Pitt",
}
我拍了电影d遵循Angular教程的etail页面,使用$ resource。 这是电影detail.component.js
angular.
module('movieDetail').
component('movieDetail', {
templateUrl: 'static/partials/movie-detail/movie-detail.template.html',
controller: [ '$routeParams', 'Movie',
function MovieDetailController($routeParams, Movie) {
var self = this;
self.movie= Movie.get({movieId: $routeParams.movieId})
}
]
});
在电影中的HTML模板,我必须通过“$ ctrl.movie.actors”获得了“演员”的ID。但我无法弄清楚是否有办法使用此ID来向服务器请求“actor”对象。类似于: Actor.get({id})将它们合并到影片详情模板中。
TL; DR 我现在可以做什么:
Actors:
<ul>
<ling-repeat="actor in $ctrl.movie.actors"> {{actor}} </li>
</ul>
结果:
演员
而且我想沿着线的东西:
Actors:
<ul>
<ling-repeat="actor in $ctrl.movie.actors"> {{actor.name}} </li>
</ul>
结果:
演员
- 安吉丽娜·朱莉
- 布拉德·皮特
这个如何实现?
谢谢你的回复!
答
首先您使用Angularjs 2和Angularjs 2的方式不同,然后Angularjs 1. *。
在这种情况下,它更多的JavaScript对象的操作,而Angularjs技巧
你可以试试下面的方法来实现这一
选项1:
,如果你能在Django编辑您的REST调用,改变你的代码返回电影和演员的细节在这样一个js
{
"id": 1,
"name": "Mr & Mrs Smith",
"actors": [
1: {"id": 1,"name": "Angelina Jolie"},
2: {"id": 1,"name": "Angelina Jolie"},
]
}
并尝试在电影下为演员对象重复ng。或者您可以根据您的要求分开呼叫。
选项2:
你需要在加载的时间做一个懒加载。一旦你的电影对象被加载,你需要调用actor rest url来获得所有需要的actor对象,并且如果你不能进行一次单独的休息调用,就将它们追加到现有的对象中。然后在模板中你可以像上面那样显示actor的详细信息。
关于选项1:我可以在Django中嵌套序列化器来实现类似的JSON输出,但我认为它会使其他通话中的无用信息膨胀。我认为只有在需要时才向服务器询问这些数据会更好。 Option2看起来就像我想要做的一样。你能举出一个如何实现这个目标的例子吗? – Curtwagner1984
另外,据我所知我使用Angular 1.5.7 – Curtwagner1984
我没有发现角1.5。 1.5可能有组件选项。我认为它是我的不好。对于第二个选项的实现,进行一次http调用以获取所有电影,并且一旦完成,就会在循环中单独调用以获取所有演员的背景。当演员正在加载时,显示演员字段下的加载符号。 –