SAPUI5 - oModel.create 不是函数

我正在尝试构建一个简单的 SAPUI5 应用程序,它基本上列出了一个填充了员工数据(ID、姓名、地址)的表。 

http://img.mukewang.com/62d8b0f000019d4e07940351.jpg

但是,我无法添加新员工,因为我总是遇到同样的错误:


Uncaught TypeError: oModel.create is not a function at constructor.Save (EmpDetails.controller.js?eval:87)


你能帮我解决这个问题吗?我不明白为什么 create 函数不起作用,因为它已连接到模型并且应该可以正常工作(就像在初始化时填充表的 GET 方法一样)。这是我的控制器代码:


sap.ui.controller("zemployee_crud.EmpDetails", {


    onInit: function() {

        var sServiceUrl = "proxy/http/<server>:<port>/sap/opu/odata/sap/ZEMPLOYEE_SRV";

        var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true);


        var oJsonModel = new sap.ui.model.json.JSONModel();


        oModel.read("/EmployeeSet",null,null,true,function(oData,response){

            oJsonModel.setData(oData);

        });


        sap.ui.getCore().setModel(oJsonModel);

    },


    Save: function() {

        var oId = sap.ui.getCore().byId("Id").getValue();

        var oName = sap.ui.getCore().byId("Name").getValue();

        var oAddress = sap.ui.getCore().byId("Address").getValue(); 

        

        var oEntry = {};


        oEntry.Empid = oId;

        oEntry.Empname = oName;

        oEntry.Empadd = oAddress;

        

        var oModel = sap.ui.getCore().getModel();

        

        oModel.create("/EmployeeSet", oEntry, null, function (response) {

            // success message

            // table reload

        }, function (Error) {

            //show error 

        });

    }

});


泛舟湖上清波郎朗
浏览 129回答 1
1回答

摇曳的蔷薇

您的 JSONModel 不支持create.&nbsp;您必须使用 ODataModel。首先,您必须将模型存储在某个地方var&nbsp;oModel&nbsp;=&nbsp;new&nbsp;sap.ui.model.odata.ODataModel(sServiceUrl,&nbsp;true); this.getView().setModel(oModel);然后稍后您可以访问模型并调用 create。var&nbsp;oModel&nbsp;=&nbsp;this.getView().getModel(); oModel.create(...);这是最简单的方法。我强烈建议了解该框架:sap.ui.model.odata.ODataModel已弃用。使用sap.ui.model.odata.v2.ODataModel.在 manifest.json 中声明您的模型。然后所有控制器都可以访问它。在大多数情况下,您不需要额外的 JSONModel。您可以直接使用 ODataModel 并将其显示在您的列表中无需将任何模型(JSON 或 OData)设置为核心 (&nbsp;sap.ui.getCore().setModel())。核心处于非常高/全球的水平。大多数情况下,将其设置在应用程序/组件级别(在您的 manifest.json 或 Component.js 中)或控制器级别就足够了。我也强烈建议做官方演练。完成需要 1-2 天,但之后你几乎是专业人士,因为它回答了 95% 的初学者问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript