0

https://github.com/akveo/ng2-smart-table 在设置对象中,我们定义结构来显示名称、标题等字段。我想直接将对象分配给列。对象包含字段

only.settings = {
  editable: false,
  mode: 'inline',
  add: {
    confirmCreate: true
  },
  edit: {
    confirmSave: true,
  },
  actions: {
    delete: false
  },
  columns: {
    food: {
      title: 'Food',
      filter: false,
    },
    quantity: {
      title: 'Quantity',
      filter: false,
    },
    unit: {
      title: 'Unit',
      filter: false,
      editor: {
        type: 'list',
        config: {
          list: [
            { value: 'gm', title: 'gm' },
            { value: 'slice', title: 'slice' },
            { value: 'cup', title: 'cup' },
            { value: 'glass', title: 'glass' },
            { value: 'pcs', title: 'pcs' },
            { value: 'ml', title: 'ml' },
            { value: 'bowl', title: 'bowl' },
            { value: 'tbspn', title: 'tbspn' }
          ]
        }
      }
    },

我必须创造

array =>units[]= { value: 'bowl', title: 'bowl' },{ value: 'tbspn', title: 'tbspn' } 

想要分配 =>
列表:this.units

但它不工作。以防我通过 Web 服务调用获取数组。

4

2 回答 2

2
  1. 构建一个 { value: unit, title: unit } 对象数组
  2. 将设置对象重新分配为新对象

代码:

const options = [];
for (const unit of units) {
    options.push({ value: unit.val, title: unit.name });
}
this.settings.columns.unit.editor.config.list = options;
this.settings = Object.assign({}, this.settings);
于 2017-06-24T14:26:18.533 回答
0

从 web 服务收到数组后,将要转换的元素映射到 smart-table 中使用的结构。

地图参考:Array.map

它会是这样的:

config.list = unitsFromWebservice.map(function(unit) {
   return { value: unit, title: unit };
});
于 2017-06-21T14:25:39.607 回答