sapui5 - 为 VizFrames DimensionDefinition 和 MeasureDefinition 使用 i18n 文本
问题描述
我正在使用饼图 vizFrame 并希望使其可翻译。
--> i18n texts
API Reference 中写了 MeasureDefinition 和 DimensionDefinition
name :图表中显示的度量名称
所以 name 是决定如何命名我的 Measure 和 Dimension 的属性。
如果我使用硬字符串,它可以工作。
如果我使用 i18n 文本,它不会。
我认为这是因为values
FeedItem 的 Property 似乎需要与name
Property Measure 和 Dimension 相同。但这只是我在演示工具包示例中看到的猜测......
有谁知道我如何在 VizFrame 中使用 i18n 文本?
代码:
<viz.data:dimensions>
<viz.data:DimensionDefinition name="{i18n>material}"
value="{odataModel>MaterialText}" />
</viz.data:dimensions>
<viz.data:measures>
<viz.data:MeasureDefinition name="{i18n>sales}"
value="{odataModel>Sales}" />
</viz.data:measures>
错误:
未捕获(承诺中)错误:“销售”是字符串类型,对于元素 sap.viz.ui5.controls.common.feeds.FeedItem#__item4 的属性“值”应为任何 []
解决方案
好吧,一种方法是使用工厂进行相应的聚合。在工厂中,您可以克隆一些模板项,而不是绑定文本,您可以动态分配“硬”项,例如:
myDimensionFactory: function(sId, oContext){
const oBundle = this.getModel('i18n').getResourceBundle();
return this.byId('templateItemId').clone(sId)
.setName(oBundle.getText('sales'));
//or whatever you need translated,
//you can also use oContext if you want to translate something from the model
}
推荐阅读
- java - 谁选择在 Java 中执行哪个重载函数?
- typescript - 用于处理数据库模式默认值的 Typescript 实用程序类型
- python-3.x - 在 cmd 中使用“pip install ...”安装任何模块时出错
- angular - Angular 10+ 构建到绝对路径缺少 de index.html 文件
- c# - 未加载视图
- javascript - 我在 mvc Web 应用程序上的提交按钮有问题
- css - 创建扩展 Tailwind css 类的类
- highcharts - Highcharts:同一窗格中具有不同 Y 轴的多个图表?
- c# - 如何使用键中的点添加到路由值元素
- javascript - 单击链接时,React 使用 ref 滚动到特定组件