SAPUI5 — привязка выражения к типу привязки агрегации

#sapui5

#sapui5

Вопрос:

Можно ли использовать привязку выражения в привязке типа агрегации. У меня есть таблица, и каждая строка в таблице имеет столбец с элементом управления sap.m.Select. Я хочу привязать элемент управления select в каждой строке к различным элементам на основе свойства строки.

Ниже приведен мой примерный пример:

 <Table headerText="Dimensions/Measures" mode="MultiSelect" includeItemInSelection="true" items="{path: 'dataModel>/Fields'}">
  <columns>
    <Column hAlign="Center" vAlign="Center" visible="true">
      <header>
        <Label text="Dimensions/Measures" />
      </header>
    </Column>
    <Column hAlign="Center" vAlign="Center" visible="true">
      <header>
        <Label text="Type" />
      </header>
    </Column>
    <Column hAlign="Center" vAlign="Center" visible="true">
      <header>
        <Label text="Role" />
      </header>
    </Column>
  </columns>
  <ColumnListItem>
    <Text text="{dataModel>Fieldname}" />
    <Text text="{= ${dataModel>Aggr_Oper} !== null ? 'Measure' : 'Dimension'}" />
    <Select items="{= ${path: 'dataModel>Aggr_Oper'} !== null ? ${dataModel>/chartConfigData/dimData}: ${dataModel>/chartConfigData/measData}}">
      <core:Item key="{dataModel>key}" text="{dataModel>text}" />
    </Select>
  </ColumnListItem>
</Table> 

Моя модель данных выглядит следующим образом:

 {
   "Fields":[
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"PropertyID",
         "FieldDescription":"PropertyID",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":1,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":"true",
         "Sort_Op":"ASC",
         "Sort_Order":1,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      },
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"Description",
         "FieldDescription":"Description",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":2,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":"true",
         "Sort_Op":null,
         "Sort_Order":null,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      },
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"PropertyTypeID",
         "FieldDescription":"PropertyTypeID",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":3,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":"true",
         "Sort_Op":null,
         "Sort_Order":null,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      },
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"PropertyType",
         "FieldDescription":"PropertyType",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":4,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":null,
         "Sort_Op":null,
         "Sort_Order":null,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      },
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"RegionID",
         "FieldDescription":"RegionID",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":5,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":null,
         "Sort_Op":null,
         "Sort_Order":null,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      },
      {
         "AppID":"RP_PROP",
         "AppVariantID":"PropListVariantDemo",
         "Fieldname":"RegionDescription",
         "FieldDescription":"RegionDescription",
         "Aggr_Oper":null,
         "Filterable":null,
         "Visible":"true",
         "Filter_Val":null,
         "DisplayOrder":6,
         "FieldGroup":null,
         "SubTotal":null,
         "FieldType":null,
         "Sortable":null,
         "Sort_Op":null,
         "Sort_Order":null,
         "ChartRole":null,
         "BusinessEntity":"BRS"
      }
   ],
   "chartConfigData":{
      "dimData":[
         {
            "key":"val1",
            "text":"val1"
         },
         {
            "key":"val2",
            "text":"val2"
         }
      ],
      "measData":[
         {
            "key":"val3",
            "text":"val3"
         },
         {
            "key":"val4",
            "text":"val4"
         }
      ]
   }
} 

Ответ №1:

Нет, пути динамической привязки невозможны. Однако есть несколько возможных обходных путей:

  • Вы можете обработать данные своей модели и добавить ссылку на соответствующий список выбранных элементов в каждую строку. Используйте относительный путь привязки к этой ссылке в привязке select fields.
  • Вы можете использовать фабричную функцию для создания строк вашей таблицы. Вы можете поместить свой шаблон строки как зависимый от вашей таблицы и клонировать его, а также настроить привязку selects для каждой строки в функции factory
  • Вы можете добавить несколько выборок с разными привязками к своей таблице и скрыть все, кроме одной, в каждой строке, связав видимые свойства выборок.

Комментарии:

1. Спасибо шноделю. используется опция заводской функции сверху, поскольку количество строк ограничено.