我的应用程序中有一种情况,每次用户的角色发生变化时,我都需要重新加载菜单(一个用户可以在多个公司中拥有角色)。
我想知道解决这个问题的最佳方法是什么。
目前我正在做以下事情:
app.controller('menuLoadingCtrl', function($location, $scope, authService){
$scope.model.initialRole = authService.getRole();
$scope.$watch(function(){return authService.getRole()}, function(val){
if(val && val != $scope.model.initialRole){
$scope.layout.menuSrc = 'partials/menu.html';
}
});
})
简单地将用户重定向到菜单加载视图,并在角色加载完成后从那里返回到菜单视图。
我把它包装在一个函数中:
$scope.layout.reloadMenu = function(){
$scope.layout.menuSrc = 'partials/menuLoading.html';
}
我在任何想要重新加载菜单的情况下都会调用它。
我想知道是否可以通过从 $rootScope 上的服务广播此事件,然后在控制器中监听它来使此过程更加自动化。
对此的任何想法\建议将不胜感激。
$watch()
正在进行污垢检查:该函数在每个摘要周期进行比较。另一方面,$broadcast()
仅当有事件时才传播事件。自然,$broadcast()
比$watch()
.
但你真的需要担心这里的性能吗?按周期进行的原始比较没什么意义。然而,从概念上讲,$watch()
显然是你所需要的:你想要做一个动作每次变量改变时。我无法想象使用$broadcast()
here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)