我试图将我的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
答案 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>