Я использую каналы JSONP с пользовательскими функциями обратного вызова, например:
jsonpCallbackAllStar2015({
"events": [
{
"title": "XYZ"
}
...
]
})
Я могу сделать это, используя решение, опубликованное здесь, например так:
var jsonUrl = 'http://i.cdn.turner.com/nba/nba/.element/media/2.0/teamsites/warriors/json/json-as2015.js?callback=JSON_CALLBACK' + (new Date().getTime());
$http.jsonp(jsonUrl);
window.jsonpCallbackAllStar2015 = function(data) {
$scope.events = data.events;
}
Однако теперь я хотел бы сделать это в службе, чтобы я мог загружать данные один раз и вводить их во все мои контроллеры. Однако, когда я пытаюсь это сделать, я получаю ошибку $injector undefined, которую я Я предполагаю, что служба не возвращается достаточно быстро:
eventsFactory.$inject = ['$http'];
function eventsFactory($http) {
var jsonUrl = 'http://i.cdn.turner.com/nba/nba/.element/media/2.0/teamsites/warriors/json/json-as2015.js?callback=JSON_CALLBACK' + (new Date().getTime());
$http.jsonp(jsonUrl);
window.jsonpCallbackAllStar2015 = function(data) {
return data.events;
}
}
Можно ли это как-то исправить или мне придется повторять запрос jsonp в каждом контроллере? Вот скрипка.