在Angular中跨控制器显示或隐藏侧边栏内容。 ui-route是否适合这个?

时间:2016-04-07 16:54:23

标签: angularjs angular-ui-router

我正在开发一个仪表板,我在Angular中有一堆模块和控制器。其中一个是处理侧边栏中显示的内容,例如不同URL或状态中的不同小部件。

我一直在使用ui-route作为框架(页眉,页脚,主要内容),但我不确定在显示或隐藏小部件时我是否在正确的轨道上。怎么能/应该这样做?

Here's a plunkr说明了我的两种方式 - ui.router的状态和$rootScope.$broadcast vs $scope.$on,给出了我想要包含的文件列表。

有什么想法或想法吗?

3 个答案:

答案 0 :(得分:1)

不要使用$ rootscope,这是一直不好的做法。

使用抽象状态作为其他状态的父级。然后,您可以简单地使用父控制器在加载时为其余页面提供状态条件,并在此之后使用简单的ng-if。

答案 1 :(得分:0)

在这种情况下,您使用的路由器基本上无关紧要。考虑到这是全局状态信息,$rootScope可能是处理是否显示某些事物的最佳位置。我不认为$broadcast是必要的,您可以直接从根范围分配和检查属性。

答案 2 :(得分:0)

正如Harris Weinstein所说,$ broadcast看起来无关紧要。您也可以执行类似

的操作
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
  $rootScope.currentState = toState.name;
});

比你可以在html中使用ng-if来隐藏和显示小部件。