ExtJS6:在网格面板的列中传递整个对象或 2 个字段

ExtJS6: Passing entire object or 2 fields in gridpanel's columns

在构建 GridPanel 的列值时,如果该字段没有值,我需要查找该字段,它应该查找另一个字段并将其呈现为列值。现在,根据 ExtJS6 docs,我们可以将单个数据属性传递给 dataIndex,并通过渲染函数传递模型值。但是没有提到如果提到的字段没有值,如何使用回退属性。

这是片段:

{
  text: 'Title',
  flex: 1,
  dataIndex: '<how-to-pass-object-itself-or-two-fields>',
  renderer: function(value, metaData) {
    return '<i class="fa fa-bars"></i>' +  value;
  }
}

渲染器函数有更多的输入参数。

您可以抓取记录中的所有字段。

var DEFAULT_VALUE = '';

{
    dataIndex : 'a' // or could be 'b', or 'c' or etc…
    renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
        var fieldA = record.get('a');
        var fieldB = record.get('b');
        var fieldC = record.get('c');

        // …

        return value || DEFAULT_VALUE; // ?
    }
}

在 return 语句中,只需将 DEFAULT_VALUE 替换为您的其他字段值之一或实际默认值。

如果您的网格可在客户端排序,则在使用 renderer 呈现列中的不同记录值时应小心。

您还可以查看 Ext.data.field.Field

中的 convert 方法