【问题标题】:In ExtJS how do I load an object into a form field?在 ExtJS 中,如何将对象加载到表单字段中?
【发布时间】:2012-12-15 03:59:33
【问题描述】:

如果我有类似的 JSON 响应,

{
    "something": "foo",
    "subobject": {
        "id": "bar",
        "name": "baz"
    }
}

我正在使用form.setValues(responseObject) 将响应加载到表单中。

如果我在子对象的形式中有displayfield,我如何将子对象中的名称放入该字段?或者更好的是,如何将名称和 id 放入该字段?

我试过自定义渲染器,但是传入渲染器的value参数是一个包含"[object Object]"的字符串。

我正在使用 ExtJS 4.1.3。有人有什么建议吗?

【问题讨论】:

  • 从长远来看,通过使用模型和商店并使用 form.loadRecord(record) 设置表单字段,您可能会得到更好的服务
  • @dbrin,你应该这么说很有趣。我刚刚在我的问题stackoverflow.com/questions/11835729 中添加了一条评论,大意是同时使用商店和表单是一件非常痛苦的事情。
  • @dbrin,顺便说一句,之前的评论并不是为了贬低。根据我的经验,商店和表单似乎不是为互操作性而设计的。但我仍然是一个 ExtJS 新手。
  • 取决于您要对表单做什么以及您的数据模型有多复杂,这可能会变得很困难。但是在大多数情况下,这种关系很好:看看 Sencha docs.sencha.com/ext-js/4-1/#!/example/writer/writer.html 的这个例子

标签: forms extjs extjs4


【解决方案1】:

通过将以下内容添加到我的显示字段配置来使其工作

valueToRaw: function(value) {
    return value;
}

标准的 valueToRaw 将对象转换为字符串,这对任何人都没有用。

然后我添加了这个自定义渲染器以将我的字段显示为链接,

renderer: function(value, field) {
    if (!value) { 
        return; 
    }
    return "<a href='" + value.id + "'> " + value.name + "</a>";
}

我觉得我应该能够使用模板而不是自定义渲染器,但我没有成功。

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2010-12-19
    • 1970-01-01
    • 2012-05-25
    • 2013-07-07
    • 2012-09-23
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多