【问题标题】:Ext JS 4: Override format of data sent to the serverExt JS 4:覆盖发送到服务器的数据格式
【发布时间】:2012-10-31 05:46:37
【问题描述】:

我正在使用 Ext JS 4 创建一个简单的管理员 UI。我从 Sencha 网站上的 this 示例开始。我在表单中添加了一个复选框组(有四个选项),并且我根据表单下方网格中的选定记录动态检查了这些框。一切正常,但是当我向服务器发送数据时,复选框组中的数据格式会因单击的按钮而异。

例如,当我编辑一条记录并单击保存按钮时,Ext JS 会发送一个数组,其中包含对应于复选框选中状态的真/假值:

{"available": [true, true, false, false]}

当我创建一个全新的记录并单击添加按钮时,Ext JS 会发送一个包含已选中复选框名称的数组:

{"available": ["Selection_1", "Selection_2", "Selection_3"]}

最后,如果我创建一条新记录并单击添加按钮但只选中一个复选框,Ext JS 会发送一个字符串值(与第二个示例中发送的数组相反):

{available": "Selection_1"}

Ext JS 为什么要这样做?这使得处理服务器端的数据变得困难。此外,有没有一种方法可以覆盖保存按钮将数据发送到服务器的方式,以便它以与添加按钮发送的相同格式发送数据?谢谢!

【问题讨论】:

    标签: javascript extjs extjs4 checkbox


    【解决方案1】:

    您可以使用 allowSingle:false 来确保所有写入操作都发送记录数组,而不管记录的数量。这是 API 文档:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.writer.Json-cfg-allowSingle

    就正在发送的值而言。我不清楚这里到底发生了什么,但你可能想看看这个函数:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.CheckboxGroup-method-getSubmitData

    编辑:另一个注释 - 复选框使用 inputValue 来确定提交表单时要发送的内容。检查此属性的配置。

    【讨论】:

    • 感谢您的回复!我为每个复选框配置了 inputValue,就像你说的那样,当我阅读 Ext JS 文档时,它在提交时说,每个复选框的 inputValue 都已发送。一定是当点击保存按钮(并调用updateRecord())时,没有调用提交动作?我不知道为什么它不会发送 inputValue。 allowSingle 方法很有帮助,但不完全是我想要的,getSubmitData 方法返回 null 但我将对此进行更多研究......
    猜你喜欢
    • 1970-01-01
    • 2020-10-30
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    相关资源
    最近更新 更多