是否可以在没有ui-sref的情况下使用ui-sref-active?

时间:2017-01-02 10:40:55

标签: angularjs angular-ui-router ui-sref

我有这个模板

<div class="row">
    <div>
        <div >
            <a ui-sref-active="active" ui-sref="main.step1">
               <span>1</span>               
            </a>
            <a ui-sref-active="active" ui-sref="main.step2">
               <span>2</span>
            </a>
            <a ui-sref-active="active" ui-sref="main.step3">
               <span>3</span>                
            </a>
        </div>
    </div>
</div>

<div id="form-views" ui-view>

</div>

我要求用户不能通过点击网址在这些状态之间导航,他应该使用特定模板中的按钮在状态之间导航。

我想知道如何在没有ui-sref-active指令的情况下使用ui-sref

2 个答案:

答案 0 :(得分:4)

尝试这样的事情:

<ul class="nav navbar-nav">
    <li class="icon-border">
        <a ng-class="{ active: isActiveMainBar('main.step1')}" ui-sref="main.step1">A
          </a>
    </li>
    <li class="icon-border">
        <a ng-class="{ active: isActiveMainBar('main.step2')}" ui-sref="main.step2">B
          </a>
    </li>
    <li class="icon-border">
        <a ng-class="{ active: isActiveMainBar('main.step3')}" ui-sref="main.step3">C
          </a>
    </li>
</ul>

controller

$scope.isActiveMainBar = function(tab) {
    var path = $location.path();
    if (path.indexOf(tab) !== -1) {
        return true;
    } else {
        return false;
    }
};

希望这会对你有所帮助。

答案 1 :(得分:1)

我想出了这个功能:

 function isStateActive(stateName) {
            return $state.current.name === stateName;
 }

并像这样使用它:

 <a  ng-class="{'active': isStateActive('main.step1')}">            <span>1</span>
  </a>