不调用SAPUI5 Formatter

时间:2015-05-08 15:28:14

标签: xml 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>

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的装订看起来不正确

MyModel>/name //它声明name是数据属性层次结构根目录下的属性。 正确的方法:

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

尽管如此,我有时也遇到过这个问题!

出于某种原因,当使用两个或更多参数时,它开始工作。

示例:

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

其他解决方案:

看起来您正在绑定来自UI控制器的数据。 如果是,请格式化您想要的数据,然后将其设置为建模。

答案 1 :(得分:0)

index.html 中的

data-sap-ui-xx-bindingSyntax="complex"是调用诸如formatter之类的复杂绑定的原因。