[英]router ui “resolve” doesn't resolve “returned deffered.promise”
我有這個角度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;
}
}
})
和這個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;
};
這個家庭組件:
(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;
即使response.data === 'AdOps'
home組件綁定到isAdOps = false
我應該如何更改代碼?
您必須將依賴項添加到控制器依賴項中已解析的項。
controller: ['$scope', '$state', 'isAdOps', function ($scope, $state, isAdOps) {
...
}
這解決了我的問題:
resolve: {
isAdOps: function (authorizationService) {
return authorizationService.getLdapGroup();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.