在 SAPUI5 中使用本地 JSON 文件进行数据绑定

Use Local JSON File for Databinding in SAPUI5

我在使用 SAPUI5 时遇到了一些小问题。我有以下代码:

var oModel = new sap.ui.model.json.JSONModel();
oModel.loadData("JSON/saplogon.json");


    var oTable = new sap.ui.table.Table({
        visibleRowCount: 30,
        firstVisibleRow: 0
    });


    oTable.addColumn(new sap.ui.table.Column({
        label: new sap.ui.commons.Label({text: "Server"}),
        template: new sap.ui.commons.TextView().bindProperty("text", "Server"),
        width: "40%"
    }));


    oTable.addColumn(new sap.ui.table.Column({
        label: new sap.ui.commons.Label({text: "Beschreibung"}),
        template: new sap.ui.commons.TextView().bindProperty("text", "Description"),
        width: "40%"
    }));

    oTable.addColumn(new sap.ui.table.Column({
        label: new sap.ui.commons.Label({text: "Adresse"}),
        template: new sap.ui.commons.TextView().bindProperty("text", "Address"),
        width: "10%"
    }));

    oTable.addColumn(new sap.ui.table.Column({
        label: new sap.ui.commons.Label({text: "SystemID"}),
        template: new sap.ui.commons.TextView().bindProperty("text", "mssysname"),
        width: "10%"
    }));


    oTable.setModel(oModel);
    oTable.bindRows({
        path: "/Systeme",
        filter: allFilter
    });     

    oPage_Results.addContent(oTable);

上面的代码有效,但是当我将 .JSON 文件的目录更改为我的服务器上的目录时,它不起作用,我还尝试使用 [=18= 从另一台服务器获取数据]P 但这也行不通,任何人都可以帮我找到一种方法来使用我的服务器中不在我的包中的本地 JSON 文件。

非常感谢你们

尝试 Ajax 文件,在定义 table 及其列后:

var sServiceUrl = 'yourServerOrNetworkPathInclJson';
var post = $.ajax({
            url : sServiceUrl,
            type : "GET"
        });

post.done(function(data) {

    var oModel = new sap.ui.model.json.JSONModel();
    console.log(data); // check binding path
    oModel.setData(data);

    oTable.setModel(oModel);
    oTable.bindRows({
        path : "/", // might also be "/d/results" or whatever
    });
}

现在终于成功了,我刚刚在我的 SAP ERP 系统的服务器上安装了一个 IIS7 Web 服务器,并将我的文件托管在 IIS7 上。我不需要使用 AJAX 请求或 SAPUI5 库的正常加载模型方法起作用的东西。感谢小伙伴们的帮助。

在 UI5 中加载 JSON 文件的更好方法

var oModel = new JSONModel()
oModel.loadData(pathToTheJSONFile);
oModel.attachRequestCompleted(function(oEventModel){
    //console.log(oModel.getData());
    //This is called after data is loading
});
oTable.setModel(oModel);

我觉得这是更好的方法。