Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果类的主页是angularJS,则添加该类_Javascript_Angularjs - Fatal编程技术网

Javascript 如果类的主页是angularJS,则添加该类

Javascript 如果类的主页是angularJS,则添加该类,javascript,angularjs,Javascript,Angularjs,如果是其索引,则在body标记中添加或删除类 app.js angular.module('app', [ 'ui.router', 'ngAnimate' ]) .config( [ '$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { $urlRouterProvider .otherwise('/'); $statePr

如果是其索引,则在body标记中添加或删除类

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/),否则删除添加的类,例如:abc.com/#/about

提前谢谢
Kanagan

有许多选项可以为body创建控制器来处理此问题,或者使用指令或服务来执行此操作。最简单的选择是使用$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}">

我没有测试这个。如果不起作用,请执行console.log,登录
toState
,查看不同页面上的值,并根据需要调整代码

更新


我创建了一个。我不确定你的app.html中有什么,但按照你的设置方式,我建议为我在示例中创建的
app.home
添加另一个状态。

谢谢。我试过了,但没有成功:(你能检查并帮助吗?@Kanagan,正如我提到的,查看
控制台。log
会向你显示你需要的内容。
toState
是一个包含url、templateUrl和name的对象。我使用
toState.name
来确定显示的是哪个视图。我还添加了一个plunker,这样你就可以看到它在运行。