我如何将逻辑应用于绑定聚合以动态生成子代

时间:2019-01-03 12:00:43

标签: sapui5

我在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

1 个答案:

答案 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
  •   
     

该函数必须返回适合于绑定聚合的对象。