Обновление: Я добавил a jsFiddle моей проблемы. Я также полностью переписал вопрос, поскольку идеи изменились.Почему мое значение knockout.js не сохраняется?
У меня есть страница, где я использую knockout.js для макета. У меня это успешно работает на другой странице в моем приложении, но я не могу заставить это работать. Моя модель состоит из родительской записи и ее дочерних записей. Моя проблема заключается в том, когда я пытаюсь сделать копию предыдущей строки, чтобы пользователь мог добавлять много похожих записей. Когда я ввожу значения в поля «Мой», «Проект», «Работа» и «Комментарии», значения остаются пустыми в модели, поэтому, когда я отправляюсь копировать эти поля, они остаются пустыми. =. Есть идеи? Я предполагаю, что мне не хватает чего-то глупого.
function DayViewModel(day) {
var self = this;
self.Date = day.Date;
self.Time = day.Time;
self.Hours = ko.observable(day.Hours);
self.TimesheetCode = ko.observable(day.TimesheetCode);
self.Department = ko.observable(day.Department);
self.Project = ko.observable(day.Project);
self.Job = ko.observable(day.Job);
self.Comments = ko.observable(day.Comments);
self.JobIsRequired = ko.observable((day.JobIsRequired == undefined) ? false : day.JobIsRequired);
}
function RequestViewModel() {
var self = this;
self.DaysRequested = ko.observableArray([new DayViewModel({
Date: new Date().toString("MM/dd/yyyy"),
Time: "08:00 AM",
Hours: 1,
TimesheetCode: "",
Department: 0,
Project: 0,
Job: 0,
Comments: ""
})]);
self.timesheetCodes // gets data from an external data source
// Add another day copying the previous day.
self.addDay = function() {
var array = self.DaysRequested();
var previousDay = array[array.length - 1];
previousDay.Date = Date.parse(previousDay.Date).addDays(1).toString("MM/dd/yyyy");
var test = ko.utils.unwrapObservable(previousDay.Department);
var newDay = new DayViewModel({
Date: previousDay.Date.toString("MM/dd/yyyy"),
Time: previousDay.Time,
Hours: ko.utils.unwrapObservable(previousDay.Hours),
Department: ko.utils.unwrapObservable(previousDay.Department),
Project: ko.utils.unwrapObservable(previousDay.Project),
Job: ko.utils.unwrapObservable(previousDay.Job),
Comments: ko.utils.unwrapObservable(previousDay.Comments),
TimesheetCode: ko.utils.unwrapObservable(previousDay.TimesheetCode)
});
self.DaysRequested.push(newDay);
}
}
Можете ли вы создать JSFiddle, http://jsfiddle.net, с помощью HTML, JS и CSS, чтобы мы могли отладить вашу проблему? – nickytonline
Итак, что сломано? Можете ли вы описать, что делает пользователь, что вы ожидаете, и что на самом деле происходит? Все, что мы знаем, это «Значение нокаута не сохранено» и «он не работает». Можете ли вы уточнить, что не работает? – CodeThug
@CodeThug Извините, я, должно быть, отвлекся и забыл добавить то, что было не так. –