我有一个模板html页面(比如Index页面),其中包含一个标题和另外三个页面,我希望在前两页但不在第三页上使用Header。使用angularjs routing我可以在所有三个页面上都有这个标题但不能隐藏第三页的标题。页面也有不同的控制器。任何人都可以帮我实现这个目标。
答案 0 :(得分:1)
这不是一个好习惯,根本不是!但是因为你的问题缺乏代码......
你说“页面有不同的控制器”,所以假设你有PageOneCtrl
,PageTwoCtrl
和PageThreeCtrl
。
如果您想在包含控制器的页面上显示标题,请说:PageOneCtrl
和PageTwoCtrl
,设置$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">
。但我相信你不是一个高级开发人员:)所以继续学习。