所以在 Angular 中可以做这样的事情:
function userTemplateProvider($sessionStorage, $templateRequest) {
var user = $sessionStorage.user;
}
当您调用该函数时,您只需键入:userTemplateProvider;
,Angular 将自动注入(inject)服务。
现在我处于需要将变量传递给该函数的情况。
如果我这样做:
userTemplateProvider($sessionStorage, $templateRequest, myvar);
当然,将 myvar
添加到函数中:
function userTemplateProvider($sessionStorage, $templateRequest, myvar){
var user = $sessionStorage.user;
}
然后这两个服务将是空的。
所以我的问题是如何添加变量但仍然注入(inject)服务
我的完整代码:
仪表板模块
angular.module('Dashboard',[])
.config(['$stateProvider', '$urlRouterProvider', 'JQ_CONFIG', 'USER_ROLES', 'hammerDefaultOptsProvider',
function ($stateProvider, $urlRouterProvider, JQ_CONFIG, USER_ROLES, hammerDefaultOptsProvider) {
$stateProvider
.state('dashboard', {
abstract: true,
url: '/dashboard',
templateProvider: userTemplateProvider,
resolve: {
deps: ['uiLoad',
function (uiLoad) {
return uiLoad.load([
'js/controllers/headerController.js'
]);
}]
}
})
.state('dashboard.index', {
url: '/index',
templateProvider:getTemplate,
data: {
authorizedRoles: [USER_ROLES.lb, USER_ROLES.superadmin, USER_ROLES.subadmin]
},
resolve: {
deps: ['uiLoad',
function (uiLoad) {
return uiLoad.load([
'js/controllers/chart.js',
'js/controllers/dashboard/DashboardController.js',
'js/controllers/dashboard/ClientDashboardController.js'
]);
}]
}
})
}]);
模板加载器
angular.module('TemplateLoader', []);
function userTemplateProvider($sessionStorage, $templateRequest) {
var templateLocation = $sessionStorage.activeUser.user.user_type.super_type_id == 1 ? 'tpl/app.html' : 'tpl/client/client.html';
return $templateRequest(templateLocation);
}
function getTemplate($state, $sessionStorage) {
var templateLocation = null;
switch ($sessionStorage.activeUser.user.user_tpe.super_type_id) {
case 1:
break;
case 2:
break;
default:
break;
}
return $templateRequest(templateLocation);
}
最佳答案
创建一个专门用于 myvar 的函数是可行的,尽管您可能可以使用 Angular 的约定。
function userTemplateProvider(myvar) {
return function($sessionStorage, $templateRequest) {
var user = $sessionStorage.user;
// can also access myvar here
};
}
然后我们将其作为:
userTemplateProvider(myvar);
关于javascript - Angularjs 注入(inject)附加变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36421530/