Templates 在“余烬模型”表中使用模板
我正在使用ember models table(),我想定制一个表单元格的输出。正如文档所示,我尝试将模板和组件指定给列定义中的列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
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
}
});