1
我視圖模型是這樣的:綁定JQuery的標籤使用淘汰賽JS
function ViewModel() {
var self = this;
self.Tab = function (id, name, text, selected) {
var tab = this;
tab.id = ko.observable(id);
tab.name = ko.observable(name);
tab.text = ko.observable(text);
return tab;
};
self.selectedTab = ko.observable(1);
self.tabs = new Array();
self.tabs.push(new self.Tab(1, 'Tab 1', 'Tab 1 Content'));
self.tabs.push(new self.Tab(2, 'Tab 2', 'Tab 2 Content'));
self.tabs.push(new self.Tab(3, 'Tab 3', 'Tab 3 Content'));
self.tabs.push(new self.Tab(4, 'Tab 4', 'Tab 4 Content'));
return self;
}
ko.applyBindings(new ViewModel(), document.getElementById("TabDiv"));
及相關HTML如下:
<div id="TabDiv">
<div id="tabs" data-bind="foreach: tabs">
<div class="tab" data-bind="css: {selected: $parent.selectedTab() == id()}, text: name, click: $parent.selectedTab.bind($parent, id())">
</div>
</div>
<div id="tabContent" data-bind="foreach: tabs">
<div data-bind="if: $parent.selectedTab() == id()">
<span data-bind="text: text"></span>
</div>
</div>
</div>
現在,我還有一個視圖模型如下:
var ProjectViewModel = {
........
AddEmployee: function (data, event) {
$('.chkList').each(function() {
//Here i want to generate tab
});
}
};
複選框列表綁定到ProjectViewModel的一個可觀察數組中,這一切都正常工作。我想要做的是,點擊複選框列表中的複選框,生成一個Tab(類似於Jquery UI Tab)。
您可以看到靜態插入的4個標籤值,這些值完美地工作。我正在按預期得到標籤。但我無法將我在ProjectViewModel的AddEmployee函數中獲取的值推送到ViewModel中的tabs數組中。我不知道如何處理self.tabs.push(new self.Tab(.....));在ViewModel之外。
任何幫助,非常感謝。