在我的UI5应用程序中,我有一个带有键和值的 i18n.properties 文件:
#XMSG:
qty = Quantity
我在对话框中使用此属性值作为标题
onUpdateDialog: function() {
var that = this;
var dialog = new Dialog({
title: "{i18n>qty}",
type: "Message",
content: new Text({
text: "Record Already exists,Are you sure you want to continue?"
}),
beginButton: new Button({
text: "Confirm",
press: function() {
//Confirm Button Click Event
dialog.close();
}
}),
endButton: new Button({
text: "Cancel",
press: function() {
//Cancel Button Click Event
dialog.close();
}
}),
afterClose: function() {
dialog.destroy();
}
});
dialog.open();
},
但是当我运行我的应用程序时,没有显示对话框标题:
当我在其他地方的i18n属性文件中使用文本值时,它会显示出来。
答案 0 :(得分:1)
为了在控制器中使用文本,您需要先获取文本,如下所示:
this.getOwnerComponent().getModel("i18n").getResourceBundle().getText("qty")
这将是对话框内的对话框,因此在对话框之前声明一个,并将其更改为..
var that = this;
that.getOwnerComponent().getModel("i18n").getResourceBundle().getText("qty")
希望这能解决你的问题..
答案 1 :(得分:1)
必须将必要时在视图外部创建的控件添加到模型委托链中,以便使用任何传播模型,在我们的示例中为ResourceModel "i18n"
。
然而,在您的代码中并非如此。该对话框已创建,但它不知道任何模型。
解决此问题的一种方法是将创建的对话框添加到视图<dependents>
aggregation。
onUpdateDialog: function() {
var dialog = new Dialog({
//...
});
this.getView().addDependent(dialog);
dialog.open();
},
来自API参考:
特殊聚合
dependents
连接到生命周期管理和数据绑定,但不会自动呈现,可用于弹出窗口或其他相关控件或元素。这允许在声明视图中定义弹出控件,并允许将模型和上下文信息传播给它们。
答案 2 :(得分:0)
在打开Dialog时,它并不知道i18n型号。在打开对话框之前,您需要通过调用dialog.setModel(this.getModel('i18n'), 'i18n')
将模型提供给对话框。