私は、ユーザが行うすべての要求に対して、companyid,employeeid
などのような重要なものを取得しようとします。だから、の前にを受け取る必要があります。角度プロミスが動作しない
その後、ユーザーは、すべての要求(get/company/{companyid}
)で設定したcompanyidに基づいて情報を受け取ります。
私が持っている問題は、companyidを受け取るための応答が(get/company/{companyid}
)にまだcompanyid
がまだないことを依頼しようとしていることです。
私はこの約束を修正しようとしましたが、機能しません。
ここで私は(私はすべての要求を行うことを)利用者に関するいくつかの重要な情報を受信しよう:
サービス
(function() {
angular.module('employeeApp')
.service('authenticationservice', authenticationservice);
function authenticationservice($http,$location,authenticationFactory,$q,GLOBALS,$cookies) {
this.validateUser = function() {
var vm = this;
vm.deferred = $q.defer();
data = {"api_token": api_token};
return $http.post(GLOBALS.url+'show/employee/' + $cookies.get('employeeid'),data)
.success(function(response)
{
vm.deferred.resolve(response);
})
.error(function(err,response)
{
vm.deferred.reject(err);
});
return vm.deferred.promise;
}
}
})();
ルート(私のルートでは、私が使用するファイル を提出すべての重要なユーザー変数を設定するauthenticationservice
)
employeeAppModule.run([
'authenticationservice',
'constants',
function(authenticationservice,constants) {
authenticationservice.validateUser()
.then(function(response)
{
constants.companyid = response.result.Employee;
constants.role = response.result.Role;
constants.name = response.result.FirstName;
console.log('test');
},
function(response){
console.log('error');
});
}
]);
問題は、ユーザー情報が遅く設定されていて、angleが既に設定されていないcompanyIdを使用している私のhomeControllerに既に移動していることです。
ありがとう
'$ http'すでにあなたは、単に返すことができます約束を返します。なぜあなたは '$ q'でそれをラップしようとしていますか? – migg
'.success'は推奨されていません。 docs https://docs.angularjs.org/api/ng/service/$http#deprecation-notice – user2950720
を参照してください。返信する前に約束を解決する必要があります:vm.deferred.resolve(); –