Я новичок в Angularjs, и я хочу получить имя пользователя от контроллера Asp.net MVC. В моем угловом контроллере у меня есть заводской метод "getUserName", который получает имя пользователя от контроллера mvc. Ниже приведен код
ФАБРИКА
appControllers.factory('testFactory', ['$http', function ($http) {
var factory = {};
factory.getUserName = function(){
return $http.get('Home/GetUser').then(function (result) { return result.data; });
}
return factory;
}]);
В контроллере приложений я вызвал заводскую услугу "getUserName" для получения текущего активного пользователя. См. Код и поведение.
КОНТРОЛЛЕР APP
appControllers.controller('contrlA', ['$scope', '$http', 'testFactory', function ($scope, $http, testFactory) {
var user = ' ';
testFactory.getUserName().then(function (result) {
user = result;
console.log('print out of console suser ' + user); // this prints my windows login name "print out of console suser AMAZO\demo.b"
});
console.log('print out of console user ' + user); // this is the problem, note username is missing "print out of console user"
}]);
ASP.NET MVC ACTION
[HttpGet]
public string GetUser()
{
var userName = User.Identity.Name;
return userName;
}
АННОТАЦИЯ: Я хочу присвоить результат getUserName переменной, чтобы я мог использовать ее как вход для других методов. Пожалуйста, простите меня, если вопрос слишком прост, я новичок в angularjs и был в этом вопросе более 4 дней.
Это потому, что HTTP-запрос является asyncrhonus, и console.log, который не работает, ударяется до завершения HTTP-запроса.