我在SAPUI5中有一个表,可以很好地显示5个信息单元格。
但是,我如何对此应用逻辑?例如,有时我需要将第二个单元格设置为return WebHost.CreateDefaultBuilder(args)
.UseContentRoot(AppDomain.CurrentDomain.BaseDirectory)
.UseConfiguration(ConfigurationService.Config)
// Dirty hack to temp fix my problem
//.ConfigureAppConfiguration(configuration => configuration.AddConfiguration(ConfigurationService.Config))
.UseStartup<Startup>()
.UseSerilog()
.Build();
,而不是sap.m.RatingIndicator
。
是否有提供逻辑的方法,或者必须始终对单元进行硬编码?
sap.m.Text
答案 0 :(得分:1)
您可以使用工厂功能。
<Table items="{
path: '/',
factory: '.createColumnListItem'
}" />
createColumnListItem: function(id, context/*of the current item*/) {
const displayRatingIndicatorInstead = /*...*/;
return new ColumnListItem(id, {
cells: [
// ...
displayRatingIndicatorInstead ? new RatingIndicator() : new Text(),
// ...
]
});
},
与提供模板控件相反,工厂函数使我们可以在每个迭代步骤中动态实例化一个新控件。
有关更多信息和示例,请查看文档主题 Using Factory Functions 。
bindItems
oTable.bindItems({
path: "/",
factory: this.createColumnListItem.bind(this),
// no template!
// ...
});
来自API reference: ManagedObject#bindAggregation
:
将调用工厂函数为聚合中的每个项目创建一个对象;这是提供模板对象的替代方法,并且可以在对象根据绑定上下文而有所不同时使用;工厂函数将通过两个参数调用:
- 应该用于创建的对象的
id
和- 必须为其创建对象的绑定
context
;该函数必须返回适合于绑定聚合的对象。