Заводской метод HTTP не работает
Я не могу получить этот вызов JSON с моей фабрики jsonLanguage
,
Мой код:
var App = angular.module('App', []);
var theLanguage = 'english';
App.factory('jsonLanguage', function($http){
var theLanguage = 'english';
return {
get: function(theLanguage){
var url = theLanguage + '.json';
$http.get(url);
}
}
});
App.controller('mainController', function($scope, $http, $log, jsonLanguage) {
//$http.get(theLanguage + '.json')
jsonLanguage.success(function(res){ //here is the problem I tried .then and tried res.data no luck :(
$scope.language = res;
$log.debug($scope.language);
});
$log.debug($scope.language);
angular.forEach($scope.letter, function(single) {
$log.log("hello worldsss");
$log.log(single);
});
});
App.controller('intervalController', function($scope, $log) {
this.$log = $log;
//var name = $scope.single;
angular.forEach($scope.letter, function(single) {
$log.log("hello worldsss");
$log.log(single);
});
//$log.log(name);
$log.log('Hello World!');
});
App.controller('clickController', function($scope) {
});
Я старался jsonLanguage
, а потом и попробовал res.data
без удачи
3 ответа
Решение
Здесь вы пропустили пару вещей:
Вернуть
$http
обещание от обслуживанияget method
get: function(theLanguage){ return $http.get(url); }
Call фабрика
get method
и получить данные в своем обещании успеха, поставив.then
над этим вызовом метода.jsonLanguage.get($scope.language).then(function(res){ $scope.language = res.data; });
Вам нужно позвонить jsonLanguage.get().then(/**insert callback fn here*/)
для того, чтобы позвонить в сервис.
И чтобы это работало, вам нужно вернуть обещание в вашей функции get.
get: function(theLanguage){
return $http.get(url);
}
Вернуть $http
обещание, так что вы можете решить это позже, используя then
,
return {
get: function(theLanguage) {
var url = theLanguage + '.json';
return $http.get(url);
}
}
Теперь вы можете использовать его как jsonLanguage.get().then()