2015-03-24 3 views
0

Я пытаюсь отправить полученный ответ с сервера с помощью модуля ngResource Angular. Я использую обещания, но это не работает, я думаю, что может быть что-то не так с моим кодом. Он идет как:Использование обещаний в Angular's ngResource

Контроллер:

var LoginController = angular.module('LoginController', [ 

]); 

LoginController.controller("LoginController", ['$scope','$location','LoginService', function($scope, $location, LoginService) { 


    $scope.user = {} 


    $scope.checkCredentials = function() { 
     var userCredentials = LoginService.get(); 
     userCredentials.$promise.then(function(result){ 
      $scope.user.login = response.login; 
      $scope.user.password = response.password; 
     }); 


    }; 
}]); 

Rest модуль:

var RestServices = angular.module('RestServices', ['ngResource']); 

RestServices.factory('LoginService', ['$resource','$routeParams', 
    function($resource, $routeParams){ 

     return $resource('/user',{},{ 
      get: {method:'GET', isArray:false} 
     }); 
    }]); 

Если я ставлю строку:

var userCredentials = LoginService.get(); 

непосредственно в объявлении контроллера, он работает и пользователь объекта заполняется правильно и отправляет на мое представление, но когда я пытаюсь сделать это в функции, вызванной нажатием кнопки (l ike это в моем коде), он не заполняет пользовательский объект должным образом. Что может быть неправильным с моим кодом? Спасибо заранее.

+0

Не могли бы вы поставить другой фрагмент кода, пожалуйста? –

+0

.then * функция (результат), но вытягивание данных из ответа? – Cerad

+0

добавьте блок .catch к вызову LoginService.get(), чтобы узнать, не сработало ли что-то. – JackNova

ответ

0

Изменить «результат» на «ответ»!

var userCredentials = LoginService.get(); 
userCredentials.$promise.then(function(response){ 
    $scope.user.login = response.login; 
    $scope.user.password = response.password; 
    }); 

Но вы также можете достичь того же в более емкой и идиоматические образом:

LoginService.get(function(data){ 
    $scope.user.login = data.login; 
    $scope.user.password = data.password; 
    }); 
Смежные вопросы