Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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 ng类条件有效,但仅当我刷新页面时有效_Javascript_Angularjs_Ng Class - Fatal编程技术网

Javascript ng类条件有效,但仅当我刷新页面时有效

Javascript ng类条件有效,但仅当我刷新页面时有效,javascript,angularjs,ng-class,Javascript,Angularjs,Ng Class,我有导航指令;这很好用。。。除非我更改页面,否则在我手动刷新网站之前,“活动”类不会添加到相关链接 我的ng类所在的代码: <ul class="nav navbar-nav"> <li ng-repeat="item in nav" ng-class="{'active':(item.alias==current)}"> <a ui-sref="{{item.alias}}">{{item.name}}</a> </

我有导航指令;这很好用。。。除非我更改页面,否则在我手动刷新网站之前,“活动”类不会添加到相关链接

我的ng类所在的代码:

<ul class="nav navbar-nav">
   <li ng-repeat="item in nav" ng-class="{'active':(item.alias==current)}">
      <a ui-sref="{{item.alias}}">{{item.name}}</a>
   </li>
</ul>

我的印象是,这应该是开箱即用的!是因为我在使用指令吗?

页面加载时,您的
导航功能只运行一次。
和
$rootScope.current
仅设置一次。 看起来您正在使用ui路由器。尝试将该行放入
$stateChangeSuccess
事件回调:

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

与其在$rootScope中跟踪当前状态名,不如像这样直接检查状态名

ng-class="{ 'active': $state.includes('state.name')}"
这也适用于嵌套状态。例如,如果您的状态如下所示,则如果状态为
子项1

home
    item1
        subItem1

很可能-不确定您使用的是哪个版本,但是…-您可以为此使用ui路由器中的ui sref active属性

<ul class="nav navbar-nav">
   <li ng-repeat="item in nav" ui-sref-active="active">
      <a ui-sref="{{item.alias}}">{{item.name}}</a>
   </li>
</ul>
  • {{item.name}

什么是当前版本?确保它是动态的。哦,它是当前页面;在指令函数中,我得到如下结果:$rootScope.current=$state.current.name;这个解决方案可能有效,但它不能回答问题。
<ul class="nav navbar-nav">
   <li ng-repeat="item in nav" ui-sref-active="active">
      <a ui-sref="{{item.alias}}">{{item.name}}</a>
   </li>
</ul>