我正在尝试调用格式化程序。例如将文本转换为大写。我有两个格式化程序,一个在控制器中,一个在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>
感谢您的帮助!
答案 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)
data-sap-ui-xx-bindingSyntax="complex"
是调用诸如formatter之类的复杂绑定的原因。