Angular2-类属性上的双向数据绑定
Angular2 - Two-way data binding on class attribute
我使用的是twitter引导选项卡,当用户切换不同的选项卡时,我想跟踪应用于li
标签的active
类。我一直在跟踪class属性,因为我想通过自己的自定义按钮,通过将代码中的class属性更改为activate
来激活选项卡。我正在使用以下代码来实现这一点:
import {Component} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
@Component({
selector: 'app',
template: `
<div class="container-fluid" >
<ul class="nav nav-tabs" >
<li *ngFor="#tab of tabs" [(class)]="tab.class" ><a href="#{{tab.id}}" data-toggle="tab" >{{tab.id}}</a></li>
</ul>
<div class="tab-content">
<div *ngFor="#tab of tabs" [(class)]="tab.contentClass" [id]="tab.id" >{{tab.id}} content goes here.</div>
</div>
</div>
<button (click)="openTab('tab1')" >Tab 1 Button</button>
<button (click)="openTab('tab2')" >Tab 2 Button</button>
`
})
class MainApp{
public tabs = [
{class: "active", id: "tab1", contentClass:"tab-pane active"},
{class: "", id: "tab2", contentClass:"tab-pane"}
]
openTab(id){
var tabToActivate;
for(var i=0;i<this.tabs.length;i++){
if(this.tabs[i].id == id)
tabToActivate = this.tabs[i];
this.tabs[i].class = "";
this.tabs[i].contentClass = "tab-pane";
}
tabToActivate.class = "active";
tabToActivate.contentClass = "tab-pane active";
}
}
bootstrap(MainApp);
但似乎当我在不同的选项卡之间切换时,绑定会中断或其他什么,自定义的选项卡按钮暂时不起作用。为什么会发生这种情况?
我在这里的上重新生成了这个问题
单击
tab2
单击
Tab Button 1
-不起作用。
有什么想法吗?
我在您的plunker中发现了一些逻辑错误。现在,检查下面的代码和工作的plunker(根据您的编码方式)。
工作演示
<ul class="nav nav-tabs" >
<li *ngFor="#tab of tabs" (click)="openTab(tab.id)" [(class)]="tab.class" ><a href="#{{tab.id}}" data-toggle="tab" >{{tab.id}}. {{tab.class}}</a></li>
</ul>
openTab(id){
for(var i=0;i<this.tabs.length;i++){
console.log('started' + id);
if(this.tabs[i].id != id)
{
this.tabs[i].class = "";
this.tabs[i].contentClass = "tab-pane";
}
else
{
this.tabs[i].class = "active";
this.tabs[i].contentClass = "tab-pane active";
}
}
}
我会使用ngClass来代替:
<li *ngFor="#tab of tabs"
[ngClass]="{active: tab.active}">...</li>
活动属性必须是true或false,这取决于选项卡i是否处于活动状态。
请参阅此链接:https://v2.angular.io/docs/js/latest/api/common/index/NgClass-directive.html.
相关文章:
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- JavaScript HTMLElement 属性上的数据绑定 在 Polymer 中
- 聚合物 - 在重复模板中获取数据绑定属性值
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 如何使用Plates模板引擎将数据绑定到对象数组内的属性
- Angular2-类属性上的双向数据绑定
- 数据绑定禁用属性在 foreach 内的按钮中不起作用
- AngularJS 2 - 内部属性数据绑定 - 异常:类型错误:无法读取未定义的属性
- 将数据绑定到基于对象属性的现有元素数
- Angular2 - 组件变量/组件类属性上的双向数据绑定
- 从数据绑定属性迭代键值对
- 如何在一个元素上具有多个数据绑定属性
- 为什么对象上的“.show”属性会搞砸基于该对象的数据绑定
- 如何在运行时创建不带数据属性的挖空数据绑定
- HTML 元素的 “dir” 属性 (rtl/ltr) 的数据绑定
- 挖空添加我自己的数据绑定属性,如 With
- 如何获取敲除同级数据绑定属性
- 如何在Mvc帮助器中使用Knockout's数据绑定属性,如Html.EditorFor()
- Knockout js的可见数据绑定属性不显示结果