如何从angularjs中的其他页面中删除索引页面

时间:2015-10-20 04:18:40

标签: html angularjs

我有一个模板html页面(比如Index页面),其中包含一个标题和另外三个页面,我希望在前两页但不在第三页上使用Header。使用angularjs routing我可以在所有三个页面上都有这个标题但不能隐藏第三页的标题。页面也有不同的控制器。任何人都可以帮我实现这个目标。

1 个答案:

答案 0 :(得分:1)

  

这不是一个好习惯,根本不是!但是因为你的问题缺乏代码......

你说“页面有不同的控制器”,所以假设你有PageOneCtrlPageTwoCtrlPageThreeCtrl

如果您想在包含控制器的页面上显示标题,请说:PageOneCtrlPageTwoCtrl,设置$scope(请记住您必须定义$scope那个控制器第一个)变量就像:

$scope.showHeader = true;

PageThreeCtrl(你想隐藏标题元素的地方)写

$scope.showHeader = false;

然后在html中你应该写:

<header ng-if="showHeader">This is your header content</header>

ng-if可以解决问题,请查看angularjs文档以获取更多信息:https://docs.angularjs.org/api/ng/directive/ngIf

不起作用?请尝试$rootScope而不是$scope,但请注意!如果您使用$rootScope,则应在每个控制器上声明该变量。

  

这不是一个好习惯,根本不是!但是因为你的问题缺乏代码......

更好的做法,我认为其中一个最好的做法是使用angular-ui-router并将data属性设置为状态(路径),例如

.state('myRoute', {
    templateUrl: 'views/my-route-view.html',
    controller: 'MyrouteCtrl',
    data: {
        hideHeader: true;
    }
})

,在.run()函数集中设置$rootScope.$state = $state(在ui.router docs中详细了解),然后简单地:<header ng-if="!$state.current.data.hideHeader">。但我相信你不是一个高级开发人员:)所以继续学习。