ng-hide 没有触发,可能与 ng-view 有关?
ng-hide not triggering, maybe something to do with ng-view?
我有一个使用 angular 路由的 angular 网站。它有一个登录名,在该页面上我想隐藏 header。我在其他 Whosebug 页面上发现,执行此操作的最佳方法是使用 ng-if 或 ng-hide。但是这些似乎并没有触发。里面有一些荷兰语所以忽略那个
<nav ng-hide="isLogin()" class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header"><a href="/" class="navbar-brand"><img alt="Brand" src="../resources/calendar.png"></a></div>
<ul class="nav navbar-nav">
<li><a href="./taken">Taken</a></li>
<li><a href="./hulpaanvragers">Hulp aanvragers</a></li>
<li><a href="./vrijwilligers">Vrijwilligers</a></li>
</ul>
<ul class="nav navbar-nav pull-right">
<li><a href="./login" ng-click="logout()">logout</a></li>
</ul>
</div>
</nav>
$scope.isLogin = function(){
console.log($location.path() == '/login');
return $location.path() == '/login';
};
webpage
请注意控制台中没有打印任何内容(随机文本是其他内容),甚至很难在 isLogin() 函数 console.log() 中使用
isLogin() 函数位于 logincontroller 中,它在 app.config() 函数中为路由“/login”引用
这是一个pen,我建议做一些不同的事情。但是根据上面给出的代码,这是一种解决方法。超时仅用于示例目的,这可能是从登录响应 success/fail.
中设置的
angular.module('app', [])
.controller('ExampleController', ExampleController);
ExampleController.$inject = ['$scope', '$timeout'];
function ExampleController($scope, $timeout) {
$scope.hideNav = false;
$scope.loggedIn = function() {
//this could also be set in the view.
$scope.hideNav = true;
}
$scope.logOut = function() {
$scope.hideNav = false;
}
$scope.$watch('hideNav', function(newVal, oldVal) {
if (newVal == true) {
$timeout(function() {
$scope.hideNav = false;
}, 10000);
}
});
}
<div class="container" ng-app="app">
<nav ng-hide="hideNav" class="navbar navbar-default" ng-controller="ExampleController">
<div class="container-fluid">
<div class="navbar-header">
<a href="/" class="navbar-brand">
<img alt="Brand" src="../resources/calendar.png">
</a>
</div>
<ul class="nav navbar-nav">
<li><a href="./taken">Taken</a>
</li>
<li><a href="./hulpaanvragers">Hulp aanvragers</a>
</li>
<li><a href="./vrijwilligers">Vrijwilligers</a>
</li>
</ul>
<ul class="nav navbar-nav pull-right">
<li><a href="#" ng-click="loggedIn()">log in</a>
</li>
<li><a href="#" ng-click="logOut()">logout</a>
</li>
</ul>
</div>
</nav>
</div>
我找到了 ng-hide 不工作的原因
这是因为导航栏不是包含控制器
的 ng-view 的一部分
我不知道导航栏位于 ng-view
范围之外的事实
我通过添加一个包围整个 body
的额外控制器来修复它
编辑*
更改了解决方案,没有添加额外的控制器,而是将变量添加到 rootscope 并且 rootscope 可以访问整个页面
我有一个使用 angular 路由的 angular 网站。它有一个登录名,在该页面上我想隐藏 header。我在其他 Whosebug 页面上发现,执行此操作的最佳方法是使用 ng-if 或 ng-hide。但是这些似乎并没有触发。里面有一些荷兰语所以忽略那个
<nav ng-hide="isLogin()" class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header"><a href="/" class="navbar-brand"><img alt="Brand" src="../resources/calendar.png"></a></div>
<ul class="nav navbar-nav">
<li><a href="./taken">Taken</a></li>
<li><a href="./hulpaanvragers">Hulp aanvragers</a></li>
<li><a href="./vrijwilligers">Vrijwilligers</a></li>
</ul>
<ul class="nav navbar-nav pull-right">
<li><a href="./login" ng-click="logout()">logout</a></li>
</ul>
</div>
</nav>
$scope.isLogin = function(){
console.log($location.path() == '/login');
return $location.path() == '/login';
};
webpage 请注意控制台中没有打印任何内容(随机文本是其他内容),甚至很难在 isLogin() 函数 console.log() 中使用
isLogin() 函数位于 logincontroller 中,它在 app.config() 函数中为路由“/login”引用
这是一个pen,我建议做一些不同的事情。但是根据上面给出的代码,这是一种解决方法。超时仅用于示例目的,这可能是从登录响应 success/fail.
中设置的angular.module('app', [])
.controller('ExampleController', ExampleController);
ExampleController.$inject = ['$scope', '$timeout'];
function ExampleController($scope, $timeout) {
$scope.hideNav = false;
$scope.loggedIn = function() {
//this could also be set in the view.
$scope.hideNav = true;
}
$scope.logOut = function() {
$scope.hideNav = false;
}
$scope.$watch('hideNav', function(newVal, oldVal) {
if (newVal == true) {
$timeout(function() {
$scope.hideNav = false;
}, 10000);
}
});
}
<div class="container" ng-app="app">
<nav ng-hide="hideNav" class="navbar navbar-default" ng-controller="ExampleController">
<div class="container-fluid">
<div class="navbar-header">
<a href="/" class="navbar-brand">
<img alt="Brand" src="../resources/calendar.png">
</a>
</div>
<ul class="nav navbar-nav">
<li><a href="./taken">Taken</a>
</li>
<li><a href="./hulpaanvragers">Hulp aanvragers</a>
</li>
<li><a href="./vrijwilligers">Vrijwilligers</a>
</li>
</ul>
<ul class="nav navbar-nav pull-right">
<li><a href="#" ng-click="loggedIn()">log in</a>
</li>
<li><a href="#" ng-click="logOut()">logout</a>
</li>
</ul>
</div>
</nav>
</div>
我找到了 ng-hide 不工作的原因 这是因为导航栏不是包含控制器
的 ng-view 的一部分我不知道导航栏位于 ng-view
范围之外的事实我通过添加一个包围整个 body
的额外控制器来修复它编辑*
更改了解决方案,没有添加额外的控制器,而是将变量添加到 rootscope 并且 rootscope 可以访问整个页面