我的应用程序中有ng-view和差不多40个控制器,我有两个按钮块,其中一个块我只显示在主页面上,第二个块显示在休息页面上(我简化了按钮块两个按钮)例)。而且在某些页面上我根本不需要那些按钮。
<div id="body">
<div id="header" ng-if="!hideHeader">
<button class="button" ng-if="mainPage"/>
<button class="button" ng-if="!mainPage"/>
</div>
<div ng-view=""/>
<div>
这些按钮属于$ rootScope,元素可见或隐藏取决于根范围变量。我已经在根范围上创建了监听器,每次路由更改时都会调用该监听器。但是在那种情况下,我看到在ng-view改变了视图之前,当另一个按钮块上的一个按钮块被更改时,什么是烦人的。
$rootScope.$on('$routeChangeStart', function(next, current) {
$rootScope.hideHeader = true;
});
第二种解决方案是在控制器中设置hideHeader变量。但在这种情况下,我需要在每个控制器中设置这个变量。在这种情况下,解决方案将难以支持。例如,我将添加另一个只想在一个页面中显示的按钮块,这意味着我需要重写所有控制器。
最佳解决方案是什么?