0

Json オブジェクトから受け取ったデータを含む外部変数 (配列) を作成する必要があります。このデータ配列は、コンボ ボックスのバインドに使用されます。

私が試したこと: -

var data = [
    $.ajax({
        type: "POST",
        url: 'TimeRecord.aspx/ReturnComplexType',
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (arg) {
            alert('hello Inside new');
            for (var i = 0; i < arg.d.length ; i++) {
                "projectCode"=arg.d[i].ProjectCode
                //data.push(arg.d[i].ProjectCode)

            }

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

HTML コード:

  <td><select id="Select2" data-bind='options: data, value: selectedProject' style="width: 312px"></select>

forループでこのvar変数に値を割り当てるために、さまざまなアプローチを試みました。しかし、私はそれをバインドできませんでした。助けてください.....

編集:私の完全な他のコード

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

    this.TimeForWork = ko.computed(function () {
        return this.CheckIn() ? this.CheckOut() ? parseFloat(this.Lunch()) ? parseFloat(this.CheckOut()) - parseFloat(this.CheckIn()) - parseFloat(this.Lunch()) : parseFloat(this.CheckOut()) - parseFloat(this.CheckIn()) : 0 : 0;
    }, this);

    this.Rest = ko.observable();

    this.RemainHour = ko.computed(function () {
        return self.TimeForWork() ? self.Rest() ? self.WorkOnProject() ? parseFloat(self.TimeForWork()) - parseFloat(self.Rest()) - parseFloat(self.WorkOnProject()) : parseFloat(self.TimeForWork()) - parseFloat(self.Rest()) : parseFloat(self.TimeForWork()) : 0
    }, this);

    this.WorkOnProject = ko.observable();
    this.grandTotal = ko.observable();

    this.AddLine = function () {
        alert('hello Add');
       // alert(this.grandTotal());
        this.calcTotal();
        this.projectLine.push(new projectsWorked());
    };

    this.removeLine = function (line) {
        alert('hello Remove');
        self.projectLine.removeLine;      
    };
};

function projectsWorked() {
    var self = this;
    this.projectEnable = ko.observable(false); 
    this.hours = ko.observable();
    this.selectedProject = ko.observable();

};

ko.applyBindings(new ViewModel());
4

1 に答える 1