Bootstrap 我怎么能有一个空的ui-sref属性的angular-ui-router?

3pvhb19x  于 12个月前  发布在  Bootstrap
关注(0)|答案(3)|浏览(126)

我正在用bootstrap和angular编写一个下拉导航,使用angular-ui-router。当一个链接有一个下拉列表时,该链接应该是空白的。但是如果我传递一个空路由到ui-sref,我会得到一个错误。
下面是一个代码片段:

<ul class="dropdown-menu">
  <li ng-repeat="button in buttons" id="foo" ng-class="{'dropdown-submenu': $index=button.hasLinks}" >
    <a ui-sref="{{button.route}}" title="{{ button.text }} Tab" class="{ dropdown-toggle: button.links }" data-toggle="dropdown">
      <i class="icon icon-{{ button.icon }}"></i> {{ button.text }}
    </a>
    <ul class="dropdown-menu">
      <li ng-repeat="link in button.links">
        <a ng-href="{{ link.route }}" title="{{ link.text }} Tab">
          {{ link.text }}
        </a>
      </li>
    </ul>
  </li>
</ul>
0ve6wy6x

0ve6wy6x1#

目前,正如你在this topic中所读到的,ui-sref不处理空参数,因为这是(引用作者的话)对指令的误用。upcoming ui-state指令应该处理这个问题,但目前我发现的最好方法是(在Angular 1.3及以上版本中)使用ng-attr,如下所示:
ng-attr-ui-sref="{{ state || undefined }}"
如果state为空,则将产生undefined,并且没有有效的属性。
编辑:注意,只要它工作,它将在控制台抛出异常,由于ui-router open bug

mbskvtky

mbskvtky2#

我没有使用ui-sref,而是使用ng-href解决了这个问题:

<a ng-href="{{ ::someObject.href }}">some link</a>

控制器

someObject.href = $state.href('FancyState', params: { id: 123 });
bqf10yzr

bqf10yzr3#

您可以使用以下命令获取当前状态:$state.current.
然后写ui-sref="state.current"
这样不会给予。

相关问题