Angular - 基于状态的ng-class

时间:2016-08-16 15:32:40

标签: angularjs state ng-class

我的代码无效的任何具体原因?

<li ng-class="{active : $state.includes('products')}">

路由器代码:

.state('products', {
  url: '/products',
  templateUrl: 'app/components/views/products/products.html',
  controller: 'productsController',
  controllerAs: 'products'
})

2 个答案:

答案 0 :(得分:3)

您忘记在
CMAKE_MINIMUM_REQUIRED(VERSION 3.6) PROJECT(ex01) FIND_PACKAGE(FLTK REQUIRED NO_MODULE) # must use "NO_MODULE" include_directories(${FLTK_INCLUDE_DIRS}) link_directories(${FLTK_LIBRARY_DIRS}) add_definitions(${FLTK_DEFINITIONS})
ADD_EXECUTABLE( ex01 ex01.cxx ) TARGET_LINK_LIBRARIES( ex01 fltk ) # notice fltk here
上设置$state$stateParams,如果您这样做,可以继续在html上使用第一种方法:

$rootScope

这样你就不需要在每个控制器上注射它们了。

以下是参考: https://github.com/angular-ui/ui-router/wiki/quick-reference#note-about-using-state-within-a-template

PS:我个人不推荐这种全球性方法,但它有其优点

答案 1 :(得分:2)

您需要通过控制器中的 $ injector 获取$ state提供商(因为您会自己注入 $ scope 服务

<强> 编辑:

包括它:

 angular.module('yourModule', []).controller('YourController',['$injector',
     funciton($injector){}
 ]);

然后:

$scope.$state = $injector.get('$state');

您现在可以访问$ state。要获取当前状态的名称,只需使用:

 $state.current.name

示例:

 <li ng-class="{active : $state.current.name === 'products'}">