Angular JSONP Factory调用不起作用,但它在控制器中工作

时间:2015-05-02 20:45:30

标签: javascript angularjs angularjs-service

我查看了与此问题相关的所有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

0 个答案:

没有答案