Angularjs 如何在爱奥尼亚登录时加载菜单?
我面临一个问题,我想添加一个条件,根据登录的用户,我需要隐藏菜单中的一些按钮。这很简单,只是一个简单的if-else语句。我的问题是首先加载菜单。我想在登录后加载菜单。我该怎么做Angularjs 如何在爱奥尼亚登录时加载菜单?,angularjs,ionic-framework,Angularjs,Ionic Framework,我面临一个问题,我想添加一个条件,根据登录的用户,我需要隐藏菜单中的一些按钮。这很简单,只是一个简单的if-else语句。我的问题是首先加载菜单。我想在登录后加载菜单。我该怎么做 这是我的密码: Code inside controller of my menu. if (Apprsal.userSelectedData().usertype == undefined || Apprsal.userSelectedData().usertype == '') { $scope.nseMe
这是我的密码:
Code inside controller of my menu.
if (Apprsal.userSelectedData().usertype == undefined || Apprsal.userSelectedData().usertype == '')
{
$scope.nseMenu = true; //this is just an ng-hide in my menu
$scope.vaMenu = false; //this is just an ng-hide in my menu
}
else
{
$scope.nseMenu = false;
$scope.vaMenu = true;
}
Code of my config inside app.js
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app.home', {
cache: false,
url: '/home',
views: {
'menuContent': {
templateUrl: 'templates/home.html',
controller: 'HomeCtrl'
}
}
})
.state('app', {
url: '/app',
abstract: true,
cache: false,
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
$urlRouterProvider.otherwise('/app/home');
});
编辑:
code for my menu.html
家
我的个人资料
很抱歉,我也是爱奥尼亚的新手,但我已经实现了登录。在我的例子中,我对菜单也做了抽象视图,但将回退视图作为一个新的登录页面。在那一页我禁用了侧菜单。所以我建议你可以用下面的方法来处理 首先创建一个单独的登录视图 禁用该视图上的侧菜单。 成功登录后,移动到主页,然后覆盖范围数组,该数组负责根据用户的权限在侧菜单中显示列表。因此,您可以为特定的用户集限制某些功能。
谢谢大家! 您必须在控制器之间使用事件消息传递。(即),您可以创建自定义事件并将事件对象从一个控制器传递到另一个控制器。这在角度上是通过$scope.$on、$scope.$broadcast()和$scope.$emit()实现的。
你可以通过这篇文章的最后几节来实现这一点。下面是另一个可以帮助您执行相同操作的方法。您也可以为菜单html添加代码吗?添加html@BalaAbhinav@JCBorlagdan你有什么解决办法吗?如果你能分享你的解决办法,那将是非常好的,因为我也面临同样的问题problem@ramashishtomar我不再做这个项目了,但最好的解决方案是创建一个回调函数,其中回调将在异步函数完成事务后立即执行。请检查“嗨,我的菜单在登录页面上被禁用,是的,当然登录视图与菜单分离,因为如果我没有,它将不在mvc中。”@JC,正如我所看到的,您没有在数组上使用ng repeat来填充菜单列表。这就是为什么在列表中隐藏或显示特定菜单可能有点复杂的原因。我建议使用控制器中的作用域数组,然后通过ng repeat循环。这将使您能够重置作用域数组的元素条件所有即使我放置ng repeat,它也不会更改if中的条件,所以重点是什么?不要使用。如果。假设您将菜单项数组设置为$scope.arr=[{'title':'Home','href':'#/app/Home'},{'title':'Page1','href':'#/app/Page1'},{'title':'Page2','href':'#/app/Page2'}]。您可以有条件地从范围数组中删除一项。因此,ng repeat不会发现它,因此也不会显示它,而且它很容易移除,但条件仍然不会再次发生
Code for my menu.html
<ion-side-menus enable-menu-with-back-views="false">
<ion-side-menu-content>
<ion-nav-bar class="bar-stable">
<ion-nav-buttons side="left">
<button class="button button-icon button-clear ion-navicon" menu-toggle="left">
</button>
</ion-nav-buttons>
</ion-nav-bar>
<ion-nav-view name="menuContent"></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<ion-header-bar class="bar-stable">
<h1 class="title"></h1>
</ion-header-bar>
<ion-content>
<div class="item-input-inset search-bar">
<div class="item-input-wrapper white">
<input id="searchKey" type="search" placeholder="Search" ng-model="data.searchKey" autocorrect="off" />
<button class="button button-clear" ng-click="search(data.searchKey)"><i class="ion-ios7-search ion-search"></i></button>
</div>
</div>
<ion-list>
<ion-item menu-close href="#/app/home">
Home
</ion-item>
<ion-item menu-close href="#/app/testprofile" ng-hide="vaMenu">
My Profile
</ion-item>
<!-- For NSE only -->
<a href="#/app/profiles" id="btnProfiles" ng-hide="nseMenu">
<ion-item menu-close>
Profiles
</ion-item>
</a>
<!-- end -->
<!-- For Phase 2
<ion-item menu-close href="#/app/notify">
Notifications
</ion-item>
-->
<a href="#">
<ion-item menu-close ng-click="btnLogout()">
Logout
</ion-item>
</a>
</ion-list>
</ion-content>
</ion-side-menu>