我查看了与此问题相关的所有SO帖子,但仍无法找到答案。 This回复似乎是最有希望的,但我不明白答案,似乎提出要求的人也没有。
我想做什么?
向itunes API发出JSONP角度GET
请求。当我从我的控制器发出GET
请求时,这非常有效,但是当我尝试重构时,为了遵守“关注点分离”的原则,将此请求移入工厂,并注入控制器I我遇到了困难。我知道如果我在工厂中没有使用JSONP调用,那么调用仍在进行中,因为我收到了CORS错误。
这是工厂代码:
var myApp = angular.module('jDillaApp', []).factory('Music', function ($http) {
var o = {
songs: []
};
o.getNextSongs = function () {
return $http.jsonp({
method: 'GET',
url: 'https://itunes.apple.com/search?term=j+dilla&limit=25?format=jsonp&callback=JSON_CALLBACK'
}).success(function (data) {
console.log(data)
});
}
return o
})
我的控制器看起来像这样:
myApp.controller('jDillaCtrl', ['$scope', '$http', 'Music',
function ($scope, $http, Music) {
Music.getNextSongs();
$scope.songs = Music.songs;
var media = new Audio();
$scope.playSong = function () {
media.pause();
var randomSong = Math.round(Math.random() * ($scope.songs.length - 1));
media = new Audio($scope.songs[randomSong]);
media.play();
}
}]);
据我所知,错误不是很多帮助,但值得发帖TypeError: h.replace is not a function