Ich versuche, die ausgewählte Registerkarte im Ansichtsmodell zu verfolgen, aber ich kann nicht scheinen, damit es funktioniert.Registerkarten mit knockoutjs + twitter Bootstrap behalten
Im folgenden Code, wenn Sie auf eine Registerkarte klicken, wird die Kopfzeile korrekt aktualisiert, aber der Inhalt der Registerkarte wird nicht angezeigt. Wenn Sie , click: $parent.selectSection
entfernen, wird der Inhalt angezeigt, aber die Kopfzeile wird nicht aktualisiert.
Jetzt, wenn Sie die aus der li
entfernen, dann scheint es zu funktionieren, wenn Sie auf die Registerkarten klicken, aber die Schaltfläche zum Auswählen der zweiten Registerkarte nicht.
Wie kann ich das schaffen?
See: 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());