我对angularjs很新,我面临的问题如下:
我有一个导航栏。由控制器控制" navController"并且它链接到"#/ login"和"#/ userregister"。我的导航栏是静态的。 我的ui-view指令在我的导航栏下面:如图所示
<nav ng-controller='navController'>
<a class="navbar-brand" href="/">First Angular Site</a>
<a class='label' href='#/userregister' ng-show="true" >Click Here to Register</a>
<a class='label 'href ='#/login' ng-show="true">Click Here To Login</a>
</nav>
<ui-view>
</ui-view>
&#13;
我希望在状态发生变化时隐藏这两个链接,即我登录时。
我无法想象如何隐藏它们......因为我的控制器不同而导航条是静态的。
可能的脑风暴解决方案我认为会起作用。
1)在我的ng-show =&#34; somefunction()&#34;中使用一个函数。设置它是真是假。 在我使用工厂的控制器之间共享数据,但由于工厂只启动了一次。我不得不放弃这个想法。
2)使用UI-Router的Reslove设置变量True或False。 但由于我的导航栏未包含在(ui-view)指令中。我不得不放弃这个想法。
还有什么方法可以让我做我想做的事。 (即在状态改变后隐藏两个链接)
编辑:
app.controller ('simpleController',function($scope ,$http, $location, tokenfactory,loginusercheck, usernamefactory){
//various stuff
}
&#13;
这是我的ui-view指令。
这是我的导航栏控制器。
app.controller ('navController',function($scope,$location,tokenfactory,loginusercheck,usernamefactory ,$window){
// sign out function defined only here
}
&#13;
这是我的.config
app.config (function ($stateProvider,$urlRouterProvider){
$stateProvider
.state('hello',
{
url: '/userregister',
templateUrl: 'partials/view.html',
controller: 'simpleController',
})
.state('listview',
{
url:'/list',
templateUrl:'partials/list.html',
controller:'newController'
})
.state('login',
{
url:'/login',
templateUrl:'partials/login.html',
controller: 'simpleController',
})
.state('index',{
url:'/',
templeUrl:'basic.html',
controller:'simpleController'
})
.state('home',{
url:'/home',
templateUrl:'/partials/home.html',
controller:'simpleController',
}
})
$urlRouterProvider.otherwise('/')
});
&#13;
我只需要以某种方式隐藏这两个链接。我不认为控制器代码是必需的,但我仍然在发帖。
答案 0 :(得分:1)
将$ state注入您的navbars控制器并将$ state对象添加到您的范围,如下所示:
app.controller ('navController',function($scope, $state){
$scope.$state = $state;
}
然后对于您希望在登录时隐藏的<a>
元素,请使用:
<a ng-show="$state.includes('login')"/>
这意味着只有您处于“登录”状态时才会显示这些链接。