Свойство связывания OData в списке SAPUI5 - PullRequest
0 голосов
/ 07 февраля 2019

Я создал EntityType в моем проекте шлюза.Как связать это значение со списком в SAPUI5?

<List id="id1" mode="{path: 'ODataManifestModel>EntitySetForBoolean', formatter: 'Formatter.formatForBoolean'}"" 
            items="{..}"

enter image description here

, поэтому я определяю в своем манифесте JSON службу шлюза и называю ее ODataManifestModel,Теперь я хотел бы связать это значение с booleanProperty и в зависимости от этого значения изменить режим моего списка.Все, что мне понятно, как это сделать, но почему-то я думаю, что не правильно связываю это.Потому что при этом я не уверен, как интерфейс узнает, что я должен был использовать это конкретное свойство.Я также попробовал что-то вроде этого:

<List id="id1" mode="{path: 'ODataManifestModel>EntitySetForBoolean>booleanProperty', formatter: 'Formatter.formatForBoolean'}"" 
            items="{..}"

но это тоже не сработало, что я тут не так делаю?

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Предполагается, что ваш сервис выглядит примерно так через URL, в вашем вопросе нет примеров данных: Northwinds oData V2 .

Open preview in external window

Здесь используется набор сущностей Products.

//manifest.json
"dataSources": {
  "ODataManifestModel": {
    "uri": "path_to_your_service",
    "type": "OData",
    "settings": {
      "odataVersion": "2.0",
      "localUri": "",
      "annotations": []
    }

  },


  ..."models": {
    "ODataManifestModel": {
      "type": "sap.ui.model.odata.v2.ODataModel",
      "dataSource": "ODataManifestModel"
    },
    ..
  }
//view.xml
<mvc:View controllerName="sap.otuniyi.sample.Master" xmlns:mvc="sap.ui.core.mvc" xmlns:core="sap.ui.core" xmlns="sap.m" xmlns:semantic="sap.m.semantic">
  <semantic:MasterPage id="page" title="Contents">
    <semantic:content>
      <List items="{ODataManifestModel>/Products}" mode="SingleSelectMaster" noDataText="No Data Available" growing="true" growingScrollToLoad="true" selectionChange="onSelectionChange">
        <items>
          <ObjectListItem title="{ODataManifestModel>ProductName}" type="Active" icon="sap-icon://user-settings" press="onSelectionChange" />
        </items>
      </List>
    </semantic:content>
  </semantic:MasterPage>
</mvc:View>
0 голосов
/ 07 февраля 2019
'ODataManifestModel>EntitySetForBoolean>booleanProperty'

Несколько вещей:

  • ваш скриншот, вероятно, неверен, потому что вам всегда нужно имя entitySet, которое можно найти в "папке" Entity Sets, а не Entity Type.Хотя ваше имя выглядит правильно.
  • вы должны привязать один элемент entitySet (массив) к свойству mode, указав его с определенным ключом в SEGW -> вашему типу сущности необходимо как минимум одно поле ключа.Вы не можете получить доступ к элементам полномочий oData в OdataModel с индексом
  • , если вам нужен абсолютный путь, если вы ссылаетесь на entitySet, то есть после model> он должен начинаться с /.В качестве альтернативы в вашем методе init контроллера после загрузки метаданных, привязайте один элемент ко всему представлению var that = this; this.getOwnerComponent().getModel().metadataLoaded().then(function() { that.getView().bindElement({path:"/EntitySetForBoolean('1234')" }); }), чтобы использовать относительное связывание в представлении (не начиная с /)
  • , путь в структуре использует /вместо >

Абсолютная привязка:

"ODataManifestModel>/EntitySetForBoolean('1234')/booleanProperty"

Или, если элемент связан с представлением или родительским контейнерным объектом в представлении, вы можете использовать относительный путь:

"ODataManifestModel>booleanProperty"
0 голосов
/ 07 февраля 2019

mode свойство из ListBase может иметь следующие свойства ( Нет, SingleSelect, MultiSelect, Delete ) и применяется ко всем элементам списка

...