在Mean.js应用程序中显示和隐藏标题导航

时间:2015-02-19 03:38:40

标签: angularjs meanjs

我正在使用Yeoman Mean.js generator构建博客。到目前为止,我真的很喜欢使用Mean.js,但是我对Angular开发相对较新,所以有些东西还没有为我点击。

我想在我的应用的所有页面上隐藏标题,并且仅在我登录时显示它。我将从标题中提取注册,并从单个位置登录以管理我的博客。

我尝试在/app/views/layout.server.view.html中的ng-show="topbarActive"元素上使用<header>

<header ng-show="topbarActive" data-ng-include="'/modules/core/views/header.client.view.html'" class="navbar navbar-fixed-top navbar-default"></header>

然后我尝试在 /public/modules/core/controllers/home.client.controller.js 中将此变量显式设置为false

$scope.topbarActive = false;

我在 /public/modules/users/controllers/authentication.client.controller.js 中将此值设置为true,希望我可以手动ping {{3}并看到我的标题栏。

在此设置之后,我看不到任何地方的标题。看到我是如何成为新角色&#39;为了实现我正在寻找的行为,我缺少哪些步骤。我对Mean.js构建它的依赖关系感到困惑吗?

1 个答案:

答案 0 :(得分:5)

AngularJS的一个关键概念是范围界定。在这种特殊情况下,您的控制器HomeController被分配到头部下的第一个div 。这使得HomeController范围对它的父(标题)不可用,它实际上根本没有任何控制器。

要使配置正常工作,请添加新控制器,例如:

/* /public/modules/core/controllers/body.client.controller.js */
'use strict';

angular.module('core').controller('BodyController', ['$scope', 'Authentication', 'Menus',
    function($scope, Authentication, Menus) {
        $scope.topbarActive = true;
    }]);

然后将此控制器添加到layout.server.view.html中的正文:

<body ng-cloak ng-controller="BodyController">

或者,您只能为您的代码创建一个控制器,具体取决于您从何处开始。