ExtJS - 使用 JsonReader 对复杂对象进行 null 安全检索

标签 extjs

我正在使用 JsonReader 将 Json 数据映射到要在网格/表单中使用的变量。后端在 Java 中,有一些复杂的对象,我将其 Jsonify 并传递给 ExtJS 前端。 这是我的 JsonReader 的一部分,它试图检索嵌套对象 -

{name:'status', type: 'string', mapping: 'status.name'}

当 status 有一个值(在服务器中不是 null)时,这工作正常,但当 status 为 null 时,网格加载失败。目前我的解决方法是在 null 的情况下从服务器发送一个空对象,但我认为应该有一种方法可以在 ExtJS 中处理这个问题。请在 ExtJS 方面提出更好的解决方案。

最佳答案

我可以想到两种可能性 - 一种有记录,一种没有记录:

  1. 使用 Ext.data.Fieldconvert() 机制:

    {
        name:'status', 
        mapping: 'status',
        convert: function(status, data) {
            if (!Ext.isEmpty(status) && status.name) {
                return status.name;
            } else {
                return null;
            }
        }
    }
    
  2. mapping 属性也可以采用提取函数(这是未记录的,因此依赖它可能会有一点风险):

    {
        name:'status', 
        mapping: function(data) {
            if (data.status && data.status.name) {
                return data.status.name;
            } else {
                return null;
            }
        }
    }
    

关于ExtJS - 使用 JsonReader 对复杂对象进行 null 安全检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711992/

相关文章:

Extjs 6 - 自定义主题包错误

javascript - ExtJS FormPanel 更改元素名称

ExtJS:如何使用 BorderLayout 扩展 Ext.Panel?

javascript - 将组件渲染到 ExtJS 网格中

extjs - 如何在 sencha touch 2 中换行 selectfield 选项的文本

javascript - Extjs 从新窗口引用父窗口

javascript - ExtJs 6 日历周和日事件

hadoop - 运行oozie时出错

extjs - 如何在 GridPanel 上禁用 LoadMask

javascript - Extjs KeyMap 不作用于defaultEventAction,而是执行默认的浏览器操作