Webix 数据表的 index/key 字段可以是 'id' 以外的字段吗?

Can the index/key field of a Webix Datatable be something other than 'id'?

我已将数据解析为 Webix 数据table,其中包含一个名为 'id' 的 属性,用于该数据中的每个对象。 'id'是一个整数,但不一定是唯一的;直到 datatable 中的所有数据都经过验证。每个对象还有一个唯一标识符,其中 属性 被命名为 'uid'。这是一个短字符串,始终对每个对象都是唯一的。有没有一种方法可以将 Webix Datatable 定向为使用 'uid' 属性(对应于 [= Datatable) 中的 43=] 字段作为数据 table?

中每个对象的 index/key

我考虑过将 'uid' 属性 映射到 'id''id' 属性 类似 'objectId':

scheme:{
    $init:function(obj){
          obj.objectId = obj.id;
          obj.id = obj.uid;
        }
      }

这看起来很笨拙,因为我只想让 'uid' 属性(相对于 'id' 属性') 作为 Webix 数据 table 中每个对象的 index/key。有没有 better/direct 方法来做我想做的事情?

您在方案中重新映射 id 的想法将是最直接和标准的方法。

您还可以创建数据驱动程序并将其指定为数据类型。这有利于每个数据加载的总体数据转换。在组件开始解析数据之前,驱动程序可以访问原始 ajax 数据。

webix.DataDriver.customParser = webix.extend({
  getRecords: function (result) {
    let data = result.data;
    for(let i = 0; i < data.length; i++) {
      data[i].oldId = data[i].id;
      data[i].id = data[i].uid;
    }
  }
}, webix.DataDriver.json);

那么,在您看来:

{
  view: 'datatable',
  url: someUrl,
  datatype: 'customParser'
}