Позвольте мне начать с того, что я полный новичок в углу.AngularJS: Возврат конфигурации с фабрики
Я пытаюсь установить псевдопостоянство в своем приложении Angular, чтобы иметь возможность получить некоторые детали конфигурации API от $http.get()
. Я читал, что правильный способ сделать это - создать фабрику, которая возвращает обещание (source), а затем ввести эту фабрику в контроллер (ы).
Я считаю, что я сделал это правильно, но я все еще получаю следующее сообщение об ошибке (обратите внимание, что при удалении ссылки на apiConfig
в контроллере, ошибки исчезают):
Error: [ng:areq] http://errors.angularjs.org/1.3.10/ng/areq?p0=fn&p1=not%20aNaNunction%2C%20got%string
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:6:417
at Qb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:19:417)
at sb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:20:1)
at Vb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:34:283)
at Object.e [as invoke] (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:36:439)
at Object.$get (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:35:71)
at Object.e [as invoke] (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:37:96)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:38:410
at d (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js:36:308)
Вот мой код:
завод
app.factory('apiConfig', ['$http', 'API_KEY'], function ($http, API_KEY) {
return $http.get('http://api.themoviedb.org/3/configuration?api_key=' + API_KEY);
});
контроллер
appControllers.controller("MovieDetailCtrl", ['$scope', '$routeParams', '$http', 'API_KEY', 'apiConfig', function ($scope, $routeParams, $http, api_key, apiConfig) {
"use strict";
apiConfig.then(function (response) {
$scope.apiConfig = response.data;
});
var setMovieObject = function (response) {
$scope.movie = response.data;
};
$http.get('http://api.themoviedb.org/3/movie/' + $routeParams.movieId + '?api_key=' + api_key).then(setMovieObject);
}]);
Я также попытался имея завод возвращает объект, но это тоже не работает. Вот код, который я пытался за что:
завод
app.factory('apiConfig', ['$http', 'API_KEY'], function ($http, API_KEY) {
var theConfig = {};
theConfig.getConfig = function() {
return $http.get('http://api.themoviedb.org/3/configuration?api_key=' + API_KEY);
};
return theConfig;
});
Контроллер
appControllers.controller("MovieDetailCtrl", ['$scope', '$routeParams', '$http', 'API_KEY', 'apiConfig', function ($scope, $routeParams, $http, api_key, apiConfig) {
"use strict";
apiConfig.getConfig().then(function (response) {
$scope.apiConfig = response.data;
});
var setMovieObject = function (response) {
$scope.movie = response.data;
};
$http.get('http://api.themoviedb.org/3/movie/' + $routeParams.movieId + '?api_key=' + api_key).then(setMovieObject);
}]);
Кроме того, как следить, есть ли ресурсы на чтение AngularJS трассировки стека? Или есть лучший способ отладки приложений AngularJS? Ошибки, которые я вижу в консоли, на самом деле не имеют большого смысла.
Я обновил мой оригинальный пост с ошибкой и некоторыми дополнительными деталями. Я установил Batarang, но он не дает ничего полезного (более старая версия была более полезной, чем эта текущая версия). – jkinz