使用odata模型添加新记录

时间:2015-09-02 18:31:13

标签: sapui5

我的模特

var oModel = new sap.ui.model.odata.ODataModel("../services/myexp.xsodata", false);
sap.ui.getCore().setModel(oModel,'data');

现在我想为此模型添加新记录。简单的代码 -

openUserCreateDialog: function(){ 
    var oUserCreateDialog = new sap.ui.commons.Dialog();
    var oSimpleForm1 = new sap.ui.layout.form.SimpleForm({
        maxContainerCols: 2,
        content:[
            new sap.ui.core.Title({text:"Create"}),
            new sap.ui.commons.Label({text:"User"}),
            new sap.ui.commons.TextField({value:""}),
            new sap.ui.commons.Label({text:"Date"}),
            new sap.ui.commons.TextField({value:""}),
            new sap.ui.commons.Label({text:"Description"}),
            new sap.ui.commons.TextField({value:""})
        ]
    });             
    oUserCreateDialog.addContent(oSimpleForm1);
    oUserCreateDialog.addButton(
        new sap.ui.commons.Button({
            text: "Submit", 
            press: function() {
                var content = oSimpleForm1.getContent();
                var oEntry = {};
                oEntry.User = content[2].getValue();
                oEntry.Date = content[4].getValue();
                oEntry.Description = content[6].getValue();

                sap.ui.getCore().getModel().create('data>/user', oEntry, null, function(){
                        oUserCreateDialog.close();
                        sap.ui.getCore().getModel().refresh();
                    },function(){
                        oUserCreateDialog.close();
                        alert("Create failed");
                    }
                );
            }
        })
    );
    oUserCreateDialog.open();
},

当我提交表单时,它会抛出错误 -

Uncaught TypeError: sap.ui.getCore(...).getModel(...).create is not a function

我的代码出了什么问题。请帮忙。谢谢

1 个答案:

答案 0 :(得分:1)

您的代码存在的问题是您将模型设置为命名模型,但访问默认模型。

sap.ui.getCore().setModel(oModel,'data');

上面的代码为oModel设置了名称' data'但在阅读时您正在访问默认模型

 sap.ui.getCore().getModel().create('data>/user', oEntry, null, function(){
                        oUserCreateDialog.close();
                        sap.ui.getCore().getModel().refresh();
                    },function(){
                        oUserCreateDialog.close();
                        alert("Create failed");
                    }
                );

因此,在访问模型时,请调用命名模型

   sap.ui.getCore().getModel('data').create('/user', oEntry, null, function(){
                    oUserCreateDialog.close();
                    sap.ui.getCore('data').getModel().refresh();
                },function(){
                    oUserCreateDialog.close();
                    alert("Create failed");
                }
            );

这将有效。