2015-06-08 4 views
0

Я хочу создать службу AngularJS для возврата данных из другой службы.Служба AngularJS возвращает данные из другой службы

Я пытался использовать этот код:

'use strict'; 

angular.module('angularDjangoRegistrationAuthApp') 
    .service('currentUser', function (djangoAuth) { 
    var that = this; 

    djangoAuth.profile().then(function(data) { 
     that.username = data.username; 
    }); 

    this.getUsername = function() { 
     return this.username; 
    }; 
}); 

Но когда я попытался получить имя пользователя из контроллера, как это:

$scope.username = currentUser.getUsername(); 

Он был пуст.

+0

Возможно ли, что 'that.username = data.username;' не устанавливается правильно? Вы поставили точку останова на этой линии, чтобы убедиться, что она работает так, как ожидалось? – chriszumberge

ответ

0

В CurrentUser службы вы настраиваете имя пользователя по

that.username = data.username; 

но в this.getUsername методе вы возвращаете его this.username, которая не определена. поэтому попробуйте изменить его

djangoAuth.profile().then(function(data) { 
    this.username = data.username; 
}); 

если служба djangoAuth получает данные с помощью метода профиля правильно, то этот код должен работать

ИЛИ вы можете изменить следующий код тоже:

this.getUsername = function() { 
    return that.username; 
}; 
+0

Это не проблема, он устанавливает 'var that = this;' в коде. То же, что и «var bar = {}; var foo = bar; foo.property = 5; bar.property; ' – chriszumberge

Смежные вопросы