具有ng-repeat

时间:2016-04-26 13:28:06

标签: angularjs twitter-bootstrap angular-ui-bootstrap angular-ui-bootstrap-tab

我试图将我的bootstrap-ui版本从0.14.x升级到最新的1.3.2,并且我遇到了一些关于uib-tabset / uib-tab指令的问题。

我尝试做的是使用ng-repeat动态创建标签,并使用“活跃”标签。 tab可以通过我的重复模型的表达式或属性来处理。

 <uib-tabset type="pills" active="{{activeItem.Id}}"  >
    <uib-tab class="arrow_box"
             ng-repeat="item in myObject.myCollection"
             ng-click="SetActiveItem(item)" id="{{$index}}"
             index="{{item.Id}}">

index =&#34; {{item.Id}}&#34; 绑定根本不起作用。所以我似乎无法通过表达式设置我的选项卡索引,如果我可以在ng-repeat完成后让uib-tabset使用活动属性,这不会成为问题。

activeItem是封闭控制器的$ scope的属性。

添加此绑定会导致错误:

Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{item.Id}}] starting at [{item.Id}}].

如果我省略所有内容( uib-tab上的index属性和uib-tabset上的active属性),它不会抛出任何错误,但它也不会选择任何选项卡默认情况下,这意味着我需要单击一个来激活该选项卡。即使文档声明默认值是&#34;默认为第一个选项卡&#34;。

任何原因ng-repeat在此指令集中不再正常工作?我可能在这里遗漏了一些东西,但我很难过。

由于

编辑: 这是一个显示我遇到的问题的plunkr链接。 https://plnkr.co/edit/DWOILq?p=preview

2 个答案:

答案 0 :(得分:1)

首先我尝试了很多修复它,但后来我决定在谷歌搜索。我找到了link

您的问题是一个已知问题,无法修复。 &#34;如果将uib-tab索引设置为动态密钥&#34;,uib-tab不会切换活动类。你必须采取一些不同的方法,比如使用&#39; $ index&#39;。

答案 1 :(得分:1)

在尝试了更多的东西之后,我意识到我犯了一个错误,并且不必为结合(活动或索引)包含表达式的括号。

它只是似乎就像他们被评估但实际上是。

以下代码应该有效: activeItemId 是父控制器上的属性。

<uib-tabset type="pills" active="activeItemId">
    <uib-tab class="arrow_box"
             ng-repeat="item in myObject.myCollection"
             ng-click="SetActiveItem(item)"
             index="item.Id">
    </uib-tab>
</uib-tabset>