我想獲得一個基於兩個observablearrays檢查複選框的列表。第一個有幾個programids,第二個將有programids的所有記錄。 observablearray的數據都來自數據庫。敲除checkedValue綁定不顯示檢查
基本上我試圖獲取ProgramID已經分配給ProgramIDs數組中的用戶的列表,並將其與AllPartnerPrograms數組的數組進行比較,並顯示與檢查匹配的數組。
然後,我希望能夠從新列表中檢查並將其發送回服務器,以使用新的programid列表更新用戶的數據。
我不知道爲什麼checkedValue綁定不起作用,或者我不明白如何使它工作。我在這裏用相同的代碼創建了一個fiddle。
我假設$root.AllPartnerPrograms
將根據self.ProgramIDs
陣列顯示檢查的項目,但這並未發生。
如果我把這樣的代碼,它會被檢查,但不會顯示其他記錄。
<input type="checkbox" data-bind="checkedValue: ProgramID, checked: ProgramID" />
如果我改變的foreach到<!-- ko foreach: AllPartnerPrograms -->
然後我得到其他記錄,但仍然沒有檢查基於第一個列表上。
我在這裏做錯了什麼?
我的代碼
<div id="programs">
<!-- ko foreach: ProgramIDs -->
<input type="checkbox" data-bind="checkedValue: ProgramID, checked: $root.AllPartnerPrograms" />
<span data-bind="text: ProgramName"></span>
<!-- /ko -->
視圖模型
var objPartnerPrograms;
vmPartnerProgramsModel = function() {
var self = this;
self.ProgramIDs = ko.observableArray(
[{ProgramID: 16002,ProgramName: "Program1"},
{ProgramID: 16003,ProgramName: "Program2"},
{ProgramID: 16005,ProgramName: "Program3"},
{ProgramID: 16006,ProgramName: "Program4"},
{ProgramID: 16011,ProgramName: "Program5"
}]);
self.AllPartnerPrograms = ko.observableArray(
[{ProgramID: 16002,ProgramName: "Program1"},
{ProgramID: 16003,ProgramName: "Program2"},
{ProgramID: 16005,ProgramName: "Program3"},
{ProgramID: 16006,ProgramName: "Program4"},
{ProgramID: 16011,ProgramName: "Program5"},
{ProgramID: 16102,ProgramName: "Program6"},
{ProgramID: 16104,ProgramName: "Program7"
}]);
};
$(document).ready(function() {
objPartnerPrograms = new vmPartnerProgramsModel()
ko.applyBindings(objPartnerPrograms, $("#programs")[0]);
});
你的句子開頭*「我的目標是在這裏」 *,然後它開始變得非常不清楚。你能改述一下嗎? – Tomalak 2014-12-07 09:26:52
重申希望現在更清楚 – Adrian 2014-12-07 09:32:42
不是,我很害怕。但我覺得你正在試圖做錯事。你真的*有兩個名單,或者你真的有*一個*名單,其中一些項目是檢查(「分配」,無論你稱之爲),而其他人不是?我想你正試圖爲一些並不是非常難的問題建立一個令人困惑的用戶界面。也許最好描述一下你想要表示的數據,而不是你想要爲其構建的UI。 – Tomalak 2014-12-07 09:38:05