2

更新:私の問題の jsFiddleを追加しました。また、アイデアが変わったので、質問を完全に書き直しました。

レイアウトに 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);
     }
 }
4

2 に答える 2