我有两个$ http.get调用需要发生。
第一个电话获取有关电视节目的基本信息。
第二个电话取决于第一个电话,因为它可以获得有关同一个电视节目剧集的信息。
我的问题是我需要记住'从第二个HTTP GET获得响应时电视节目的ID(从第二个HTTP GET返回的数据不包含原始HTTP GET呼叫的ID)。
这是我提出的解决方案,但似乎有点" hacky"对我来说。我抓住第二个电话的HTTP标头(因为它包含我的ID):
(function () {
angular.module("ngTvShows")
.controller("myTvShowsController", function ($http, tvShowFactory, nextEpisodeService, tvShowInfoService) {
var vm = this;
vm.currentNavItem = "myTvShowsNav";
vm.myTvShows = tvShowFactory.myTvShows;
for (var i=0; i<vm.myTvShows.length; i++)
{
tvShowInfoService.getTvShowInfo(vm.myTvShows[i].id).then(function (results){
for (var j=0; j<vm.myTvShows.length; j++)
{
if (vm.myTvShows[j].id == results.data.id)
{
vm.myTvShows[j].tvShowInfo = results.data;
return nextEpisodeService.episodes(vm.myTvShows[j].id, vm.myTvShows[j].tvShowInfo.number_of_seasons);
}
}
}).then(function (results) {
// here's where I get the TV show's ID from the header
var tvId = results.config.url.split("api.themoviedb.org/3/tv/")[1].split("/")[0];
var index = getTvShowIndex(tvId);
var today = new Date();
for (episode of results.data.episodes)
{
if (today < new Date(episode.air_date))
{
vm.myTvShows[index].tvShowInfo.nextEpisode = episode.air_date;
break;
}
}
});
}
function getTvShowIndex (tvId)
{
for (var i=0; i<vm.myTvShows.length; i++)
{
if (tvId == vm.myTvShows[i].id)
{
return i;
}
}
return -1;
}
});
})();
&#13;
我是Angular JS的新手,所以我确信这是一个更优雅的解决方案......我可以接受以下建议:)