angularjs - Angular-基于$ stateParams更改路线状态更改的CSS类

标签 angularjs angular-ui-router

我在版面页面中有一个div:

<div class="{{$root.containerClass}}">...</div>

有两种路由状态:
.state('controllerAction', {
    url: '/:controller/:action',
    templateUrl: function($stateParams) {
         return $stateParams.controller + '/' + $stateParams.action;
    },
    controllerProvider: function($stateParams) {
         return $stateParams.controller + $stateParams.action + 'Controller';
    },
    onEnter: function($rootScope, $stateParams) {
        $rootScope.containerId = $stateParams.controller.toLowerCase() + '-index';
    }
})
.state('controller', {
    url: '/:controller',
    templateUrl: function($stateParams) {
         return $stateParams.controller + '/index';
    },
    controllerProvider: function($stateParams) {
         return $stateParams.controller + 'Controller';
    },
    onEnter: function($rootScope, $stateParams) {
        $rootScope.containerId = $stateParams.controller.toLowerCase() + '-index';
    }
});

我希望当使用class更改路线时更改$stateParams。使用上面的代码,它确实会更改,但只会更改为先前路由的containerClass

任何帮助表示赞赏。

最佳答案

检查我的其他答案:Route-Dependent CSS Page Transitions in AngularJS

我将它与onEnter和plunker一起使用:http://plnkr.co/edit/LEMntLYosA2gIvNzw5gv?p=preview

我喜欢做这样的事情

这是一个小矮人:http://plnkr.co/edit/3Wof05ck3lVLqgTBDOew?p=preview

收听$stateChangeSuccess事件:

国家:

.state('home', {
    url: '/',
    templateUrl: '/account/index.html',
    controller: 'AccountLoginController',
    containerClass: 'account-index'
})
.state('book', {
    url: '/Book',
    templateUrl: '/book/index.html',
    controller: 'BookController',
    containerClass: 'book-index'
})

运行块:
app.run(function($rootScope){

    $rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
        $rootScope.containerClass = toState.containerClass;
    });

});

标记:
<div ng-class="{{containerClass}}">...</div>

关于angularjs - Angular-基于$ stateParams更改路线状态更改的CSS类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362425/

相关文章:

javascript - 如何在 Angular js 中验证文本框

javascript - Angular js资源调用以获取数组中的json数据

javascript - ui router - 将数据从 Controller 传递到另一个 View

javascript - 无法对通过 Angular REST 调用接收到的 Javascript 对象数组进行排序

angularjs - 从指令向元素动态添加 Angular 属性

jquery - Angular 将页面转换为可下载或通过电子邮件发送的 html

javascript - 更改 ng 包含或定义默认 ui View

javascript - 如何配置 Angular ui-router 不使用严格的 URL 匹配模式

angularjs - Angular UI 路由器无法使用 Internet Explorer 9 进行解析

angularjs - 如何将 StateChangeStart 事件推迟到 ui-router 解析执行之后