1

Knockout JS を使用してフォームを送信しようとしていますが、そのデータは json として渡されます。ここで私は問題を抱えています。以下は私のKOモデルです。

var permissionRequestModel = {

fromDate: ko.observable(''),
toDate: ko.observable(''),
checkFullDay: ko.observable(false),

fromTimeHH: ko.observable(''),
fromTimeMM: ko.observable(''),
toTimeHH: ko.observable(''),
toTimeMM: ko.observable(''),

permissionTypeOne: ko.observable(''),
permissionTypeTwo: ko.observable(''),

approverList: ko.observableArray([]),

reasonLeave: ko.observable('')

};

この承認者リストでは、取得された json オブジェクトから取得された配列によってデータが取り込まれています。次のように取り込まれます。

$(function () {
$.getJSON("http://ec20032432.compute-1.amazonaws.com/api/Request/permission?appid=1&opertype=get_approver_list", function (data) { permissionRequestModel.approverList(data.Approvers); })
});

取得したデータ。承認者は次の形式になります。

"Approvers":
[{"ID":"asdasd",
 "Display_Name":"Jason asdasd"}]

ドロップダウン リストのテキストを「Display_Name」、値を「ID」にする必要があるため、次のマークアップを使用してそれを行います。

 <select name="approverList" id="approverList" data-native-menu="true" class="required" data-bind="options: approverList, optionsCaption: 'Select Your Approver', optionsText: 'Display_Name', optionsValue:'ID'">
                    </select>    

ここまでは問題ありませんが、次のコードを使用してフォームを送信すると、選択した値 (つまり ID) ではなく、approverList がオブジェクトとして渡されます。

permissionRequestModel.requestPermission = function () {
if ($("#permissionRequestForm").valid()) {
    $.ajax({
        url: "http://eertretetrer.compute-1.amazonaws.com/api/Request/permission?appid=1&opertype=requestor",
        type: "POST",
        data: ko.toJSON(permissionRequestModel),
        processData:false,
        contentType: "application/json",
        dataType:"json",
        success: function (result) {
            alert("Success");
        },
        error: function (result) {
            alert(result.responseText);
        }
     });
}
else {
}
};

なぜこれが起こっているのか誰にも分かりますか?(ID の代わりに) 値を送信するにはどうすればよいですか?

4

1 に答える 1

1

というオブザーバブルをもう 1 つ追加してください

self.ApproverId = ko.observable();

次に、あなたのhtmlバインドで

<select name="approverList" id="approverList" data-native-menu="true" class="required" data-bind="options: approverList, optionsCaption: 'Select Your Approver', optionsText: 'Display_Name', value:ApproverId"></select> 

これが役立つことを願っています

于 2013-02-03T18:10:11.993 に答える