2015-07-09 2 views
0

Я слежу за учебником онлайн по PluralSight для работы с Angular, однако, похоже, что некоторая информация устарела.Угловой пользовательский вызов службы не работает

Я пришел к разделу создания пользовательских сервисов и выполнил руководство к письму, однако моя пользовательская служба будет работать некорректно.

кажется, терпит неудачу, когда я пытаюсь позвонить моей службе GitHub, похоже, что обещание не удается правильно вернуться к script.js .then() обработчика github.getUser()

шлепнуть для него здесь http://plnkr.co/edit/8vy6ZMpUJBfEOQ3qFoKk

Может кто-нибудь, пожалуйста, скажите мне, что мне здесь не хватает?

ответ

2

Если вы хотите просто заставить его работать, вот как это исправить:

Ваш второй вариант, чтобы добавить возврат к вашему $http на службе, как это:

var getUser = function(username) { 
    return $http.get("https://api.github.com/users/" + username) 
    .then(function(response) { 
     return response.data; 
    }); 
}; 

Примечание что вы только забыли первый «возврат» до $ http. Остальная работала хорошо

Лучшим способом решения этого было бы не решить ваше обещание внутри службы. Таким образом, вы получаете тонкий сервис и можете управлять своими данными, как вам нравится в вашем контроллере.

Так что я изменил свой GetUser к этому:

var getUser = function(username) { 
    return $http.get("https://api.github.com/users/" + username); 
}; 

Таким образом, он возвращает все обещание $http. Так как я удалил свою «обертку» Мне нужно, чтобы изменить свой onUserComplete() тоже:

var onUserComplete = function(result) { 
    $scope.user = result.data; 
    github.getRepos($scope.user).then(onRepos, onError); 
}; 

Вот рабочий plunker: http://plnkr.co/edit/8abkaU08fCzFreA5APz1?p=info

+1

аааа отличного пикапа на недостающем возвращении, у меня он работает сейчас :) спасибо за Помогите! –

+0

рад, что я мог бы помочь :) –