我刚刚开始使用 angularJS,我有一个问题:
如何访问 templateUrl 函数中使用 $rootScope 定义的变量?
这是我的代码:
myApp.config(['$routeProvider',
function($routeProvider, $rootScope) {
$routeProvider.
when( '/', {
templateUrl: 'partials/login.html',
controller: 'loginCtrl'
}).
when( '/home', {
templateUrl: function($rootScope){
console.log($rootScope.utilisateur.user.role_id);
if ($rootScope.utilisateur.user.role_id==2){
return 'partials/home.html';
}
else return 'partials/login.html';
},
controller: 'homeCtrl'
}).
otherwise({redirectTo:'/'});
}]);
它告诉我 utilisateur 是未定义的。
我在索引控制器中定义了它:
$rootScope.utilisateur = null;
$rootScope.rapports = null;
然后在LoginCtrl中:
var user = Authentification.login(email,password);
user.success(function(response){
$rootScope.utilisateur = response;
console.log($rootScope.utilisateur);
$location.path('/home');
});
您不能在配置块内部使用 $rootScope,因为配置块在创建 $rootScope 之前运行。常量和提供程序可以在配置块内部使用。如果常量不适合您,您可能需要重定向到 homeCtrl 内的正确网址。
[编辑] 从下面的评论中添加了可能的解决方案:
选项 1:有 2 条不同的路线
选项2:根据控制器/视图内部的权限切换模板
首页.html
<div ng-switch="utilisateur.user.role_id">
<div ng-switch-when="2">
<!-- is admin -->
</div>
<div ng-switch-default>
<!-- not admin -->
</div>
</div>
这不是理想的解决方案,但根据您下面的评论,它适合您想要做的事情
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)