我試圖跟蹤視圖模型中選定的選項卡,但我似乎無法使其工作。跟蹤與knockoutjs + twitter引導標籤
在以下代碼中,當您單擊一個選項卡時,標題將正確更新,但不會顯示該選項卡的內容。如果您刪除, click: $parent.selectSection
,則會顯示內容,但標題不會更新。
現在,如果您從li
中刪除data-bind="css: { active: selected }"
,那麼當您單擊選項卡時,它似乎工作,但選擇第二個選項卡的按鈕沒有。
我該如何做這項工作?
參見:http://jsfiddle.net/5PgE2/3/
HTML:
<h3>
<span>Selected: </span>
<span data-bind="text: selectedSection().name" />
</h3>
<div class="tabbable">
<ul class="nav nav-tabs" data-bind="foreach: sections">
<li data-bind="css: { active: selected }">
<a data-bind="attr: { href: '#tab' + name }
, click: $parent.selectSection" data-toggle="tab">
<span data-bind="text: name" />
</a>
</li>
</ul>
<div class="tab-content" data-bind="foreach: sections">
<div class="tab-pane" data-bind="attr: { id: 'tab' + name }">
<span data-bind="text: 'In section: ' + name" />
</div>
</div>
</div>
<button data-bind="click: selectTwo">Select tab Two</button>
JS:
var Section = function (name) {
this.name = name;
this.selected = ko.observable(false);
}
var ViewModel = function() {
var self = this;
self.sections = ko.observableArray([new Section('One'),
new Section('Two'),
new Section('Three')]);
self.selectedSection = ko.observable(new Section(''));
self.selectSection = function (s) {
self.selectedSection().selected(false);
self.selectedSection(s);
self.selectedSection().selected(true);
}
self.selectTwo = function() { self.selectSection(self.sections()[1]); }
}
ko.applyBindings(new ViewModel());