Templates 在“余烬模型”表中使用模板

Templates 在“余烬模型”表中使用模板,templates,ember.js,components,Templates,Ember.js,Components,我正在使用ember models table(),我想定制一个表单元格的输出。正如文档所示,我尝试将模板和组件指定给列定义中的列 import Ember from 'ember'; export default Ember.Controller.extend({ columnDefs { "propertyName": "id", "title": "ID", }, { "propertyName": "nam

我正在使用ember models table(),我想定制一个表单元格的输出。正如文档所示,我尝试将模板和组件指定给列定义中的列

import Ember from 'ember';

export default Ember.Controller.extend({
    columnDefs
    {
        "propertyName": "id",
        "title": "ID",
    },
    {
        "propertyName": "name",
        "title": "Name",
    },
    {
        "propertyName": "postTypeId",
        "title": "Post Type",
        "template": "ember-models-table/column/enumType", // can be template or component
    }
});
因此,我不是在谈论ember models表组件,而是关于可以指定给特定列的自定义模板/组件,如我的代码snipplet的第3列所示。虽然似乎只向模板传递了一个记录引用,但文档()说向组件传递了一个表、一个列、一个记录和一个数据引用,但我需要的是

a) 我在控制器的columnDefs中定义的特定值(或模型属性)(这是因为我希望将此模板/组件与许多模型和不同的属性名称一起使用,因此无法在模板/组件中硬编码属性名称)

b) 将任意数据传递到列的组件的能力(这里我谈论组件只是因为组件似乎可以通过data属性传递某些内容,但我不知道如何做)

希望我的问题变得更清楚一点,并将感谢每一个建议


p.S如果有更好的方式格式化表格单元格内的输出(例如,通过某种方式为单元格的值指定一个帮助器),请告诉我。

虽然我可能无法100%理解您的用例,但我假设在您的路径上呈现表格。一种方法是在控制器属性上定义列定义,并将其与模型一起传递给组件

app/controllers/person.js

import Ember from 'ember';

export default Ember.Controller.extend({
columnDefs: [
    {
        "propertyName": "id",
        "title": "ID"
    },
    {
        "propertyName": "firstName",
        "title": "First Name"
    },
    {
        "propertyName": "lastName",
        "title": "Last Name"
    }]
});
import DS from 'ember-data';

export default DS.Model.extend({
    firstName:     DS.attr('string'),
    lastName:      DS.attr('string')
});
import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('person');
  }
})
app/models/person.js

import Ember from 'ember';

export default Ember.Controller.extend({
columnDefs: [
    {
        "propertyName": "id",
        "title": "ID"
    },
    {
        "propertyName": "firstName",
        "title": "First Name"
    },
    {
        "propertyName": "lastName",
        "title": "Last Name"
    }]
});
import DS from 'ember-data';

export default DS.Model.extend({
    firstName:     DS.attr('string'),
    lastName:      DS.attr('string')
});
import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('person');
  }
})
app/routes/person.js

import Ember from 'ember';

export default Ember.Controller.extend({
columnDefs: [
    {
        "propertyName": "id",
        "title": "ID"
    },
    {
        "propertyName": "firstName",
        "title": "First Name"
    },
    {
        "propertyName": "lastName",
        "title": "Last Name"
    }]
});
import DS from 'ember-data';

export default DS.Model.extend({
    firstName:     DS.attr('string'),
    lastName:      DS.attr('string')
});
import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('person');
  }
})
app/templates/person.hbs

{{models-table
        data=model
       columns=columnDefs}}

您可以根据需要向对象添加任何选项(模板、sortedBy等)。

我可能误解了您的情况;但是请看一下我在本文中创建的虚拟应用程序。我已将自定义组件(
mycomponent
)的列定义中的
mycomponent
的组件的自定义属性和名为
tableWideCustomProperty
的表范围自定义属性传递到
模型表

您可以从
my component
中检索这些属性,如下所示:

检索组件的
我的自定义属性
列。组件的我的自定义属性
,因为列定义与名称
一起传递给自定义组件

检索
tableWideCustomProperty
table.tableWideCustomProperty
,因为
models table
本身以
table
的名称传递给自定义组件


如您所见,您可以访问列定义中定义的自定义组件中的
记录
数据
属性。

感谢您的帮助,但您所描述的是我正在做的。很明显,我已经把我想做的事情讲清楚了。所以我更新了我的问题,使之更加精确。如果你的场景需要太多模板,你最好查找@Mannimalte。我提供的答案对你没有帮助吗?当然有!我只是在最后一天没有解决那个问题。非常感谢,没关系;我只是好奇而已;祝你好运。非常感谢你——尤其是你的玩弄。这是展示事物如何运作的最好方式!
import Ember from 'ember';

export default Ember.Controller.extend({
    columnDefs
    {
        "propertyName": "id",
        "title": "ID",
    },
    {
        "propertyName": "name",
        "title": "Name",
    },
    {
        "propertyName": "postTypeId",
        "title": "Post Type",
        "template": "ember-models-table/column/enumType", // can be template or component
    }
});