对话框不显示I18n文件中的文本

时间:2018-03-27 07:36:58

标签: sapui5

在我的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();
},

但是当我运行我的应用程序时,没有显示对话框标题:

enter image description here

当我在其他地方的i18n属性文件中使用文本值时,它会显示出来。

3 个答案:

答案 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')将模型提供给对话框。