2015-05-08 2 views
2

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

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

У меня есть глобальный форматировщик в 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> 

Спасибо за помощь!

+0

Вы указали в бутстрапе UI5, что хотите поддержку синтаксиса «сложного» связывания? 'data-sap-ui-xx-bindingSyntax =" complex "' – qmacro

+0

Спасибо @qmacro. Теперь это работает как шарм! – ale

ответ

1

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

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

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

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

По какой-то причине, когда используются два или более параметров, он начал работать.

Пример:

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

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

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

+0

'MyModel>/name' не подразумевает коллекцию, он просто указывает, что имя является свойством в корне иерархии свойств данных. – qmacro

+0

Так что выше ответ не так? –

+0

Предполагается, что/name является коллекцией неправильной, вот и все. – qmacro