Я пытаюсь получить список флажков, которые проверяются на основе двух наблюдаемых символов. Первая имеет несколько программ, а вторая - все записи программ. Оба данных observablearray поступают из базы данных.Knockout checkedValue Связывание не отображается.
В основном я пытаюсь получить список программ, уже назначенных для пользователя, который находится в массиве ProgramIDs, и сравнить его с массивом массива AllPartnerPrograms и показать те, которые соответствуют проверке.
Затем я хочу, чтобы иметь возможность проверить из нового списка и отправить его обратно на сервер, чтобы обновить данные пользователя с помощью нового списка programid.
Я не уверен, почему привязка checkedValue не работает или я не понимаю, как заставить его работать. Я создал fiddle с тем же кодом здесь.
Я предполагаю, что $root.AllPartnerPrograms
отобразит отмеченные элементы на основе массива self.ProgramIDs
, но этого не произойдет.
Если я помещаю код, как это, он проверяется, но не показывает мне другие записи.
<input type="checkbox" data-bind="checkedValue: ProgramID, checked: ProgramID" />
Если изменить Еогеасп к <!-- 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
repharased надеюсь, что яснее сейчас – Adrian
Не совсем, боюсь. Но я чувствую, что вы пытаетесь сделать не то.У вас действительно есть два списка, или у вас действительно есть * один * список, из которых отмечены некоторые элементы («назначено», как вы его называете), а другие нет? Я думаю, вы пытаетесь создать запутанный пользовательский интерфейс для чего-то, что не является очень сложной проблемой в первую очередь. Возможно, лучше описать, какие данные вы хотите представлять, а не какой пользовательский интерфейс, который вы хотите создать для него. – Tomalak