Я ищу способ добавить элемент в массив, принадлежащий элементу в другом массиве, используя отображение выбивки и выбивания.
У меня есть следующее: Person, у которого есть массив WorkItems, у которого есть массив ActionPlans. Person> WorkItems> ActionPlans
Код нокаута следующий -
var PersonViewModel = function(data) {
var self = this;
ko.mapping.fromJS(data, trainingCourseItemMapping, self);
self.addWorkItem = function() {
var WorkItem = new WorkItemVM({
Id: null,
JobSkillsAndExpDdl: "",
JobSkillsAndExperience: "",
ActionPlans: ko.observableArray(),
PersonId: data.Id
})
self.WorkItems.push(WorkItem)
};
self.addActionPlan = function () {
var actionPlan = new ActionPlanVM({
Id: null,
priorityAreaStage: "",
goal: "",
action: "",
byWho: "",
byWhen: ""
WorkItemId: data.Id
});
self.ActionPlans.push(actionPlan);
};
}
Отображение массива
var trainingCourseItemMapping = {
'WorkItem': {
key: function(workitem) {
return ko.utils.unwrapObservable(workitem.Id);
},
create: function(options) {
return new WorkItemVM(options.data);
},
'ActionPlans': {
key: function (actionPlanItem) {
return ko.utils.unwrapObservable(actionPlanItem.id);
},
create: function (options) {
return new ActionPlanVM(options.data);
}
}
}
Отображение элементов массива
var WorkItemVM = function(data) {
var self = this;
ko.mapping.fromJS(data, trainingCourseItemMapping, self);
}
var ActionPlanVM = function(data) {
var self = this;
ko.mapping.fromJS(data, {}, self);
}
И, на мой взгляд, я хочу иметь следующее (отредактированное) -
<tbody data-bind="foreach: WorkItems">
//body table html here
</tbody>
<!--ko foreach: WorkItems-->
<tbody data-bind="foreach: ActionPlans">
//body table html here
</tbody>
<!--/ko-->
Error
Ошибка, которую я сейчас получаю -
Невозможно обработать привязку "click: function () {return addActionPlan}"
Как я могу поместить элемент в «вложенный» массив плана действий WorkItems? Спасибо
Редактировать -
Изображение по запросу -
Перед этой кнопкой «Добавить рабочий элемент» в основной форме. Когда нажата кнопка «Сохранить», WorkItem отображается в строке таблицы (все работает нормально)