[英]router ui “resolve” doesn't resolve “returned deffered.promise”
I have this angular js code: 我有这个角度js代码:
app.js app.js
$stateProvider.state('home', {
url: '/',
component: 'homeComponent',
params: {
selectedFilter: undefined
},
resolve: {
isAdOps: function (authorizationService) {
var ldapGroup = authorizationService.getLdapGroup();
//.then(
// function(ldapGroup) { return ldapGroup === 'AdOps';},
// function () { return true;}
// );
var isAdOps = ldapGroup === 'AdOps';
console.log("isAdOps ?? "+isAdOps)
return isAdOps;
}
}
})
and this authorizationService: 和这个authorizationService:
var getLdapGroup = function () {
var deferred = $q.defer();
if (self.isInit) {
deferred.resolve(self.isAdOps);
}
else {
$http.get('api/Voices/getLdapGroup').then(
function successCallback(response) {
self.isAdOps = response.data === 'AdOps';
deferred.resolve(response.data);
}, function errorCallback(response) {
var error = !response.data ? "empty_error": response.data.errorMsg;
console.log(error);
self.isAdOps = true;
deferred.reject("data: "+response.data+" code:"+response.status+" "+response.statusText+", please look at the web console");
});
}
return deferred.promise;
};
and this home-component: 这个家庭组件:
(function (app) {
app.component('homeComponent', {
templateUrl: 'partials/home-partial.html',
bindings: {
isAdOps: '<'
},
controller: ['$scope', '$state', function ($scope, $state) {
var self = this;
console.log("self.isAdOps = " + self.isAdOps);
self.isFullList = false;
Even though response.data === 'AdOps'
即使
response.data === 'AdOps'
The home component is binded to isAdOps = false
home组件绑定到
isAdOps = false
how should i change the code? 我应该如何更改代码?
You have to add the dependency to the resolved in your controller dependencies. 您必须将依赖项添加到控制器依赖项中已解析的项。
controller: ['$scope', '$state', 'isAdOps', function ($scope, $state, isAdOps) {
...
}
this solved my problem: 这解决了我的问题:
resolve: {
isAdOps: function (authorizationService) {
return authorizationService.getLdapGroup();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.