SAPUI5 Formatter не вызывается

Я пытаюсь вызвать форматер. например преобразовать текст в верхний регистр. У меня есть два форматтера, один в контроллере, а другой глобально в папке utils.

Я пытался позвонить обоим, но никто не звонит. Может кто-то мне помочь, пожалуйста :(?

У меня есть глобальный форматтер в папке utils:

jQuery.sap.declare("my.app.util.Formatter");
my.app.util.Formatter = {

    toUpperCase: function(sStr) {
        return sStr.toUpperCase();
    }

};

и один форматтер в моем контроллере (я также требую $.sap.require("my.app.util.Formatter");):

myControllerToUpperCaseFormatter : function(sStr) {
  console.log('I WILL DO NOTHING!');
  return sStr.toUpperCase();
}

мой XML:

<mvc:View controllerName="my.app.view.XXX"
xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:l="sap.ui.layout"
xmlns:f="sap.ui.layout.form" xmlns:c="sap.ui.core" xmlns="sap.m">
<Page class="sapUiFioriObjectPage" title="Test">
    <content>

        <Button text="{path: 'MyModel>/name', formatter: 'my.app.util.Formatter.toUpperCase'}"></Button>

        <Button text="{path: 'MyModel>/name', formatter: '.myControllerToUpperCaseFormatter' }"></Button>

    </content>
</Page>

Thanks for the help!


person ale    schedule 08.05.2015    source источник
comment
Вы указали в начальной загрузке UI5, что вам нужна поддержка сложного синтаксиса привязки? data-sap-ui-xx-bindingSyntax="complex"   -  person qmacro    schedule 09.05.2015
comment
Спасибо @qmacro. Теперь это работает как шарм!   -  person ale    schedule 11.05.2015


Ответы (2)


Ваша привязка выглядит неправильно

MyModel>/name // в нем указано, что name является свойством в корне иерархии свойств данных. Правильно:

<Button text="{path: 'MyModel>name', formatter: '.myControllerToUpperCaseFormatter' }"></Button>

Тем не менее, я тоже иногда сталкивался с этой проблемой!

Почему-то при использовании двух и более параметров он начинал работать.

Пример:

<Button text="{parts:[{path:'MyModel>name'},{path:'MyModel>somethingElse'}],formatter: '.myControllerToUpperCaseFormatter' }"></Button>

Другое решение:

Похоже, вы привязываете данные из контроллера пользовательского интерфейса. Если да, отформатируйте нужные данные, а затем установите для них модель.

person Sunil B N    schedule 08.05.2015
comment
MyModel>/name не подразумевает коллекцию, он просто указывает, что имя является свойством в корне иерархии свойств данных. - person qmacro; 09.05.2015
comment
Предположение, что /name является коллекцией, неверно, вот и все. - person qmacro; 09.05.2015
comment
Спасибо за отзыв! Комментарий @qmacro в первом посте решил эту проблему! :) - person ale; 11.05.2015

data-sap-ui-xx-bindingSyntax="complex" в index.html является причиной, по которой вызываются ваши сложные привязки, такие как форматировщик.

person Arun    schedule 02.07.2019
comment
xx-bindingsyntax является экспериментальным. Лучше использовать compatversion="edge", который автоматически устанавливает синтаксис привязки на "complex". См. stackoverflow.com/a/41554735/5846045. - person Boghyon Hoffmann; 02.07.2019