如果其主页在angularJS

时间:2015-10-03 10:29:05

标签: javascript angularjs

如果它的索引然后在body标签中添加else remove class

app.js

angular.module('app', [
'ui.router', 
'ngAnimate'
])
.config(
[          '$stateProvider', '$urlRouterProvider',
function ($stateProvider,   $urlRouterProvider) {
    $urlRouterProvider
    .otherwise('/');

    $stateProvider

    .state("app", {
        url: "",
        templateUrl: 'tmpl/app.html'
    })
    .state('app.about', {
        url: '/about',
        templateUrl: 'tmpl/aboutus.html'

    })
    .state('app.result', {
        url: '/result',
        templateUrl: 'tmpl/search_result.html'

    })
}
]
);

的index.html

<body class="home" ng-class="" >

如果主页abc.com/ else删除添加的课程,请添加课程,例如:abc.com /#/ about

提前致谢 Kanagan

1 个答案:

答案 0 :(得分:1)

有许多选项可以为主体创建一个控制器来处理这个或使用指令或服务来执行此操作。最简单的选择是使用$ rootScope。

angular.module('app', [
  'ui.router', 
  'ngAnimate'
])

.run(['$rootScope',function($rootScope){
  $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
      //console.log(toState);
      $rootScope.home = (toState.name == 'app');
  });
}])
.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider,   $urlRouterProvider) {
    $urlRouterProvider
    .otherwise('/');

    $stateProvider
    .state("app", {
        url: "",
        templateUrl: 'tmpl/app.html'
    })
    .state('app.about', {
        url: '/about',
        templateUrl: 'tmpl/aboutus.html'

    })
    .state('app.result', {
        url: '/result',
        templateUrl: 'tmpl/search_result.html'

    })
}]);

然后在html ...

<body class="home" ng-class="{'my-home-class':$root.home}">

我没有测试过这个。如果它没有工作,请在toState上执行console.log,看看不同页面上的值是什么,并根据需要调整代码。

<强>更新

我创建了plunker with a functional example。我不确定您的app.html中有什么内容,但是您进行此设置的方式我建议在我的示例中为app.home添加另一个状态。