Как напрямую связать два свойства данных с одним свойством управления, используя модель OData?

Я использую модель OData для привязки элементов управления пользовательского интерфейса к службам GW. В метаданных службы есть, скажем, «Имя» и «Фамилия» в структуре данных. Скажем, в пользовательском интерфейсе я использую элемент управления Label.

Теперь вопрос заключается в том, как связать свойство Text Label со строкой «FullName» (то есть «FirstName» + «LastName»), используя модель OData напрямую? Если я использую модель JSON, я могу создать локальную переменную FullName = FirstName + LastName и привязать свойство Text к FullName. Но как я могу сделать это с помощью модели OData?


person Dr. Dong Zhu    schedule 11.03.2014    source источник
comment
Добавление data-sap-ui-compatversion="edge" является лучшей практикой на данный момент. См. stackoverflow.com/a/41554735/5846045.   -  person Boghyon Hoffmann    schedule 03.12.2019


Ответы (4)


Кроме того, вы можете включить сложную привязку данных в sap-ui-core.js:

<script src="resources/sap-ui-core.js"
        id="sap-ui-bootstrap"
        data-sap-ui-libs="sap.ui.commons,sap.ui.table,sap.ui.ux3"
        data-sap-ui-xx-bindingSyntax="complex"></script>

А затем используйте оба свойства:

var oLabel = new sap.ui.commons.Label({
        text : "{firstName} {lastName}"
});
person Nikolay Nadorichev    schedule 25.03.2014

Вы можете использовать вычисляемые поля для привязки данных, например:

var oLabel = new sap.ui.commons.Label()
.bindProperty("text", {
  parts: [
    {path: "/firstName", type: new sap.ui.model.type.String()},
    {path: "/lastName", type: new sap.ui.model.type.String()}
  ],
  formatter: function(firstName, lastName){
    return firstName + " " + lastName;
  }
});
person Qualiture    schedule 11.03.2014

  1. будет использовать вычисляемый столбец из представления, создав новый столбец и добавив новое поле.

  2. будет использовать свойство formatter. пожалуйста, обратитесь к примеру ниже:

    new sap.ui.commons.TextView ({ 
        text: {  path: o.value, // o is an object in my local scope
            formatter: function(i) {
                // after getting your col1 and col2 values you could do the following
                var yourConcatValue = col + col2;
                return yourConcatValue;
            }                                
       }                          
    });
    
person Sergio Guerrero    schedule 17.03.2014

Оба решения Qualitue и Николай работают нормально. Для случая простой комбинированной вязки, т. е. просто связать две нити вместе, Николая лучше, так как это просто сделать. Ключевым моментом является установка data-sap-ui-xx-bindingSyntx="complex", иначе это не сработает. Для более сложных случаев связывания, т. е. необходимости сначала изменить тип данных, а затем связывание, стоит использовать Qualiture. Это более общее решение, но и более сложное.

person Dr. Dong Zhu    schedule 26.03.2014