自动JSONModel实例化

时间:2016-12-14 12:20:52

标签: sapui5

我有一个具有以下结构的应用程序:

`| index.html
| |
+---webapp
| |Component.js
| |manifest.json
| |
| +---controller
| |Detail.controller.js
| |Master.controller.js
| |
| +---service
| | data.json
| |
| \---view
| App.view.xml
| Detail.view.xml
| Master.view.xml`

我的清单文件定义了一个数据源,如下所示:

在sap.app下:

"dataSources": {
"mainService": {
"uri": "/service/data.json",
"type": "JSON"
}
}

我也尝试过路径为“service / data.json”的uri参数,但也没有用。

在sap.ui5:

"models": {
"": {
"dataSource": "mainService",
"type": "sap.ui.model.json.JSONModel"
},
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "sapui5.demo.mvcapp.i18n.i18n"
}
}
}

My Component.js包含以下代码:

sap.ui.define(["sap/ui/core/UIComponent", "sap/ui/model/json/JSONModel"], function( UIComponent, JSONModel)
{
    "use strict";
    return UIComponent.extend("sapui5.demo.mvcapp.Component",
    {

        metadata :
        {
            manifest : "json"
        },

        init : function()
        {
            // callthebasecomponent's initfunction
            UIComponent.prototype.init.apply(this, arguments);

            // createtheviewsbasedontheurl/hash
            this.getRouter().initialize();

        },

        createContent : function()
        {
            var oRootView = UIComponent.prototype.createContent.apply(this,
                    arguments);

            return oRootView;
        }
    });
});

我的index.html有以下脚本代码:

    sap.ui.getCore().attachInit(function() {
    sap.ui.require([
    "sap/m/Shell",
    "sap/ui/core/ComponentContainer",
    "sapui5/demo/mvcapp/Component"],
    function(Shell, ComponentContainer, Component) 
    {
        new Shell({
        app: new ComponentContainer({
             height: "100%",
             component: new Component({
             id: "mvcAppComponent"
             })
        })
      }).placeAt("content");
    });
        });

我无法从桌面上的本地json文件中显示我的数据。控制台上没有错误,主视图中的表为空“无数据”。

看起来清单文件完全没有效果,因为我的路由也不起作用,我不确定我的主视图是如何显示的,因为即使我弄乱了我的主视图的名称,它仍然显示出来清单文件未生效。

你能告诉我出错的地方吗?

问候,萨拉赫。

1 个答案:

答案 0 :(得分:0)

它是Component.js

的相对路径

(鉴于问题在于数据加载,而不是数据绑定,以下内容适用。对于数据绑定问题,请发布控件绑定的代码段)

manifest.json文件已在webapp文件夹结构中。由于URI地址是根据Component.js(see here)的相对路径,因此您需要根据具体情况将模型指定为以下内容:

"dataSources": {
    "mainService": {
        "uri": "/service/data.json",
        "type": "JSON"
    } }