为什么sap.m.Select没有在sap.m.Dialog中打开?

时间:2015-12-11 14:25:44

标签: sapui5 sap.m

我弹出对话框时试图显示sap.m.Select。当我按下按钮时,我的对话框正在打开。因此,当用户按下按钮时,我会动态创建sap.m.Dialog。我在这里如何在buttonPress函数中在控制器中创建对话框:

that = this;
var dialog = new Dialog({
    id : 'reasonDialog',
    title: 'Reason',
    type: 'Message',
    content: [
        that.reasonTypeSelect,
        new TextArea('id1Textarea', {
            width: '100%',
            maxLength: 100,
            placeholder: 'Enter a reason explanation'
        })
    ],
    beginButton: new sap.m.Button({
        text: 'Confirm',
        press: function () {
            MessageToast.show('Succesfully confirmed');
            dialog.close();
        }
    }),
    endButton: new sap.m.Button({
        text: 'Cancel',
        press: function () {
            dialog.close();
        }
    }),
    afterClose: function() {
        dialog.destroy();
    }
});

dialog.open();

我正在onAfterRendering函数中创建that.reasonTypeSelect,如下所示:

var oItemSelectTemplate = new sap.ui.core.Item({
    key : "{key}",
    text : "{value}"
});

this.reasonTypeSelect= new sap.m.Select({ id: 'selectReasonTypeId',
    width:'100%',
    change:'handleReasonTypeSelect'
});
this.reasonTypeSelect.setModel(this.getView().getModel());
this.reasonTypeSelect.bindAggregation("items", "/ReasonTypeList", oItemSelectTemplate);

在这里,我可以看到Select,但其中没有任何项目。

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎您从对话框组件中看不到您的模型,请尝试设置您的模型

oDialog.setModel(yourModel);

如果没有工作,请尝试在" onAfterRendering"回调。

onAfterRendering: function() {
    var oDialog = sap.ui.getCore().byId("reasonDialog");
    oDialog.setModel(this.getView().getModel("YourModel"));
}