0

json オブジェクトから返される値に projectLine 配列を追加する必要があります。次の方法を試しましたが、うまくいきませんでした。

 function ViewModel() {
    var self = this;
    this.CheckIn = ko.observable();
    this.CheckOut = ko.observable();
    this.Lunch = ko.observable();
    this.dateEntered = ko.observable();
    this.isDateValidate = ko.observable();
    this.Rest = ko.observable();
    this.projectLine = ko.observableArray([new projectsWorked()]);

  // problem occurs in this function
    this.displayData = function () {
        var date = self.dateEntered();
        $.ajax({
            type: "POST",
            url: 'TimeRecord.aspx/ReturnProjectDetail',
            data: "{'date':" + JSON.stringify(date) + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (arg) {

                self.CheckIn(arg.d.CheckIn.Hours + ":" + arg.d.CheckIn.Minutes);
                self.CheckOut(arg.d.CheckOut.Hours + ":" + arg.d.CheckOut.Minutes);
                self.Lunch(arg.d.Lunch.Hours + ":" + arg.d.Lunch.Minutes);
                self.Rest(arg.d.Rest.Hours + ":" + arg.d.Rest.Minutes);

            // problem is here.
                for (var i = 0; i < arg.d.WorkedProjects.length ; i++) {
                    self.projectLine.selectedProject(arg.d.WorkedProjects[i].ProjectCode);
                    self.projectLine.Hours(arg.d.WorkedProjects[i].Hours);               
                }
            },
            error: function (arg) {
                alert('fail ');
            }
        });
    };

};

function projectsWorked() {
    var self = this;
    this.projectEnable = ko.observable(false);
    this.Projects = ko.observableArray();
    this.hours = ko.observable();
    this.projectWork=ko.computed(function () {
       // return parseFloat($('#txthour').val());
        return this.hours();
        }, this);

    this.selectedProject = ko.observable();

    this.GetProjects = function () {
      $.ajax({
            type: "POST",
            url: 'TimeRecord.aspx/ReturnComplexType',
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (arg) {

                for (var i = 0; i < arg.d.length ; i++) {
                    self.Projects.push(arg.d[i].ProjectCode);

                }

            },
            error: function (arg) {
            }
        });
    };


};

ko.applyBindings(new ViewModel());
4

2 に答える 2