使用淘汰赛 js 中的“选项”在 Select 语句中选择值

Posted

技术标签:

【中文标题】使用淘汰赛 js 中的“选项”在 Select 语句中选择值【英文标题】:Selected value in Select statement using 'options' in knockout js 【发布时间】:2013-01-18 09:11:28 【问题描述】:

我正在尝试使用 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('')

;

现在这个approverList被一个从检索到的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>    

到目前为止还不错,但是现在当我使用以下代码提交表单时,approverList 我们被作为对象而不是选定值(即 ID)传递:

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)?

【问题讨论】:

您要传递值,例如“DH130618”吗?现在你得到了什么 ko.toJSON(permissionRequestModel)? 是的,这就是我想要传递的。现在,approverList 被作为一个对象传递,我猜它被当作一个空值。 您想将整个视图模型传递给 json 吗?即使我是淘汰赛的新手,但我知道将数据发送到 json 的其他方式。 另外你能告诉我你在数据中得到了什么输出吗? 如果您可以逐个发送值而不是发送整个视图模型,那么我建议您再添加一个名为 self.ApproverId = ko.observable(); 的 observable。然后在您的 html 绑定中,例如 然后,当您发送数据时,您必须发送单个元素并传递值,例如 self.ApproverId().ID();收到了吗? 【参考方案1】:

请再添加一个名为

的 observable
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> 

希望对你有帮助

【讨论】:

以上是关于使用淘汰赛 js 中的“选项”在 Select 语句中选择值的主要内容,如果未能解决你的问题,请参考以下文章

Knockout.js Select2 绑定。将 Select2 升级到 v4 后损坏

jQuery Chosen 在使用淘汰赛 js 时不会更新选择选项

Select2 Js 下拉菜单在 durandal Js 中不起作用

淘汰赛 - JS 分裂

两个浏览器选项卡中的相同 Vue.js 组件使 <select> 镜像其选定值

Knockoutjs 选项与 JSON 数据绑定?