此代码可以正常工作:
$routeProvider.when('/clients',
{
templateUrl:'/views/clients.html',
controller:'clientsController',
resolve: {
rights: function ($rootScope, apiService) {
var userInfo = localStorage.getItem("connectionInfo");
if (userInfo) {
userInfo = JSON.parse(userInfo);
var promiseObj= apiService.getUsersRights(userInfo.auth_token);
promiseObj.then(function(value) {
console.log(value);
$rootScope.user.rights = value.values.rights;
return value.values.rights;
});
} else {
return null;
}
}
}
});
我想多次使用这个功能,但是当我尝试这个功能时,它不起作用。它会抛出注入错误。
function userRightsResolver ($rootScope, apiService) {
var userInfo = localStorage.getItem("connectionInfo");
if (userInfo) {
userInfo = JSON.parse(userInfo);
var promiseObj= apiService.getUsersRights(userInfo.auth_token);
promiseObj.then(function(value) {
console.log(value);
$rootScope.user.rights = value.values.rights;
return value.values.rights;
});
} else {
return null;
}
}
$routeProvider.when('/clients',
{
templateUrl:'/views/clients.html',
controller:'clientsController',
resolve: {
rights: userRightsResolver($rootScope, apiService)
}
});
我是angularJS的新手。怎么做对了?
答案 0 :(得分:3)
您可以尝试以下方法,我已在我的应用中使用过这种方法。
在路线上方创建一个routeResolve
对象,并为其提供表示您将重复使用的解析函数的方法:
var routeResolve = {
rights: ['$rootScope', 'apiService', function($rootScope, apiService) {
var userInfo = localStorage.getItem("connectionInfo");
if (userInfo) {
userInfo = JSON.parse(userInfo);
var promiseObj= apiService.getUsersRights(userInfo.auth_token);
promiseObj.then(function(value) {
console.log(value);
$rootScope.user.rights = value.values.rights;
return value.values.rights;
});
} else {
return null;
}
}],
anotherMethod: [function() {...}]
};
然后在您的路线中,您可以:
$routeProvider
.when('/clients', {
templateUrl:'/views/clients.html',
controller:'clientsController',
resolve: {
rights: routeResolve.rights
}
});