在调查了允许为记录表的每一列指定多个字段的更改后,如下所示(在 RecordTable.js 的更新方法中,从第 670 行开始):
var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
var text = field.getValue();
var text2 = field2.getValue();
var text3 = field3.getValue();
由于屏幕上的列规范(问题中的代码片段)没有为field3属性设置任何值
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
失败并引发错误。方法getFieldObject始终期望传递该值,即使它应该足够聪明以适应空值/未定义值也是如此。
为了解决这个问题,代码被重构如下:
var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var text = field.getValue();
if (column.attributes['field2'] != null) {
var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
var text2 = field2.getValue();
}
if (column.attributes['field3'] != null) {
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
var text3 = field3.getValue();
}
之后,小部件代码的自定义部分只需要满足可能未定义的text2和text3属性值。