У меня есть угловая служба, которая получает объект currentuser, который разрешен как обещание. У меня есть частичный, который заполняется объектом userdetails, который вызывается внутри вызова метода, но, к сожалению, вызов метода не срабатывает при вызове после того, как обещание будет разрешено.угловой метод не стрелять в контроллер после вызова службы
.controller('AccountCtrl', [
'$scope', 'userService', '$compile', '$http', 'utility', 'cloudService', function ($scope, userService, $compile, $http, utility, cloudService) {
$scope.userdetails = {};
$scope.downloadPageChk = $scope.paymentHistoryPageChk = $scope.manageGroupsPageChk = "hide";
$scope.getUserAttribute = function (param, x) {
return userService.getAttribute(param, x);
};
cloudService.fetchCurrentUser().then(function (newCurrentuser)
{
if (newCurrentuser)
{
$scope.currentUser = newCurrentuser;
$scope.getUserDetails = function()
{
if (userService && userService.isLoggedIn())
{
$scope.userdetails = JSON.parse(JSON.stringify(currentUser));
}
};
if (newCurrentuser == 'member') {
if (newCurrentuser.features.download) $scope.downloadPageChk = "show";
if (newCurrentuser.features.paymenthistory) $scope.paymentHistoryPageChk = "show";
if (newCurrentuser.group.enabled) $scope.manageGroupsPageChk = "show";
}
}
}
])
partial
<div data-ng-controller="AccountCtrl">
<div data-ng-init="getUserDetails()">
<input type="text" class="form-control pull-left" id="FirstName" name="FirstName" data-placeholder-attr="First Name" data-ng-model="userdetails.firstname" required>
<input type="text" class="form-control pull-left" id="LastName" name="LastName" data-placeholder-attr="Last Name" data-ng-model="userdetails.lastname" required>
</div>
</div>
, пожалуйста, сообщите мне, что мне не хватает. Я ударяю головой в течение 10 часов, если я переведу пользовательские данные, если этот cloudervice.fetchuser(). Then() он по крайней мере вызывает функцию, не уверен, что происходит, когда я ее вставляю.
Похожие шлепнуть создал здесь http://plnkr.co/edit/pLAB4VpLU7uhlSibHzXP?p=preview Благодарности
Нет. Я не могу переместить функцию за пределы cloudervice.fetchuser(). Then(), поскольку объект $ scope.userdetails заполняется с использованием объекта newCurrentuser, возвращенного из службы, и поскольку это асинхронный вызов – skm
Я обновил ответ, чтобы показать, как вы можете извлечь метод getUserDetails и вызвать его в асинхронном методе cloudService.fetchCurrentUser.then'. – gnerkus