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

时间:2015-02-12 13:30:23

标签: json data-binding 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文件的目录更改为我的服务器上的目录时,它无法正常工作,我也尝试从另一台服务器获取JSONP的数据,但也无法正常工作,任何人都可以请帮助我找到一种从我的服务器中使用本地JSON文件的方法,该文件不在我的包中。

非常感谢你们

3 个答案:

答案 0 :(得分:2)

在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);

我觉得这是更好的方式。

答案 1 :(得分:0)

在定义表及其列之后尝试Ajax文件:

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
    });
}

答案 2 :(得分:0)

最后它现在工作了,我刚刚在我的SAP ERP系统的服务器上安装了一个IIS7 Web服务器,并通过IIS7托管了我的文件。我不需要使用AJAX请求或SAPUI5库的正常加载模型方法。谢谢你的帮助伙伴。