在UI5演示套件Walkthrough step 8(仍然)在一个说明中
为了安全起见,我们必须使用与控制器中类似的机制来使用资源包中的字符串并替换它的一部分。这可以使用
jQuery.sap.formatMessage
格式化程序完成。
它可用于XML视图中带占位符的可翻译文本,例如:
<Title text="{
parts: [
'i18n>overflowToolbarTitle',
'appView>/listItemCount'
],
formatter: 'jQuery.sap.formatMessage'
}" />
但是,jQuery.sap.formatMessage
从1.58开始贬值,如果我使用建议的替代sap.base.strings.formatMessage
,则抛出以下错误:
格式化程序函数sap.base.strings.formatMessage未找到!
怎么能找到新的formatMessage
?
UI5目前不允许获取和分配模块到formatter
。此外,永远不会使用名称sap.base.strings.formatMessage
.src导出新的功能模块
其中一种替代方法是指向控制器中指定的方法,而该方法指向所需的formatMessage
模块。
<Title text="{
parts: [
'i18n>overflowToolbarTitle',
'appView>/listItemCount'
],
formatter: '.formatMessage'
}"/>
sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/base/strings/formatMessage",
// ...
], function(Controller, formatMessage/*, ...*/) {
"use strict";
return Controller.extend("...", {
formatMessage: formatMessage,
// ...
});
})
我可以想象UI5支持在以后的版本中在绑定定义中获取和分配模块,但在编写时它是不可能的。