Ionic - 如何使用变量更改标题栏样式

时间:2016-10-04 13:56:06

标签: javascript html angularjs ionic-framework

我用离子启动myApp sidemenu'创建了一个Ionic应用程序,添加了一个登录页面,现在我想根据登录中输入的用户类型自定义我的标题样式,让我们说例如,管理员的正面类和普通用户的冷静。我尝试使用变量从控制器更改类,但它不起作用,这是我的代码:

app.js:

 ...

    $stateProvider
    .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'js/app/menu/sideMenu.html',
    controller:'appController'
  })

 ...

AppController的:

.controller('appController', function(sessionService, $scope, $stateParams, $state) {
                $scope.ambiente = sessionService.getAmbiente();
                console.log('The class is:'+$scope.ambiente);
}

服务 sessionService.getAmbiente()返回登录后使用window.localStorage保存的类的名称,它工作正常。

sideMenu.html:

<ion-side-menus>

  <ion-side-menu side="left">

            <!--**** Using ng-class**** -->
<ion-header-bar  ng-class="ambiente"><!--ng-class="ambiente"-->
  <h1 class="title">Menu</h1>
</ion-header-bar>

    <ion-content>
        <ion-list>
          ...
        </ion-list>
    </ion-content>

  </ion-side-menu>

  <ion-side-menu-content>

          <!--**** Using an expression**** -->
    <ion-nav-bar class={{ambiente}}>
             ...
    </ion-nav-bar>
    <ion-nav-view name="menuContent"></ion-nav-view>
  </ion-side-menu-content>
</ion-side-menus>

我也尝试在$ rootScope中使用变量,但我认为这不是最合适的方式,当用户类型发生变化时它没有刷新。

2 个答案:

答案 0 :(得分:0)

根据您从登录中获得的结果

  if(user.role == "Admin"){
   $rootScope.adminHeader=true;
   } 
   else{
   $rootScope.adminHeader=false;
   }

现在在你的sidemenu.html中,使用ng-show进行课程更改

<ion-header-bar class="bar-balanced" ng-show="adminHeader">
 <h1 class="title">Menu</h1>
</ion-header-bar>
<ion-nav-bar class="bar-calm"  ng-show="!adminHeader">
 <h1 class="title">Menu</h1>
</ion-header-bar>

希望这会对你有所帮助。感谢

答案 1 :(得分:0)

与您的用户和数据不一样,特别是因为我有一个服务可以让我登录或不登录的用户,并且在这种情况下所有数据都将执行以下操作

您必须做的是在“运行”中为不同的角色定义变量的值,如下所示:

angular.module('starter.controllers', [])

.run(function($window, $rootScope, sessionService) {
    var user = sessionService.get('user');
    if(user.role == 'Admin'){
       $rootScope.adminHeader=true;
    }else{
       $rootScope.adminHeader=false;
    }
})

我的sessioService服务

.factory('sessionService', ['$http', function($http) {
    return {
        set: function(key, value) {
            return localStorage.setItem(key, JSON.stringify(value));
        },
        get: function(key) {
            return JSON.parse(localStorage.getItem(key));
        },
        destroy: function(key) {
            return localStorage.removeItem(key);
        },
    };
}])

Html代码:

 <ion-nav-bar ng-class="positive : adminHeader, other_class : !adminHeader">