环境:

框架: SAPUI5 V.1.38.39
IDE : WebIde

要求 :

我在模型文件夹中创建了一个 JSON 文件Data.json并且我想在我的控制器onInit中使用来创建一个 JSONmodel ,我的实际问题是它总是在 Data.json 上返回一个 404 响应
文件夹树SAPUI5 应用程序模板中的第一个

代码和测试中的问题:

在 webapp/controller/App.contoller.js 中测试 1

onInit: function () {
  var oBusy = new sap.m.BusyDialog();
  var oModel = new JSONModel();
  oModel.attachRequestSent(function() {
    oBusy.open();
  });
  oModel.loadData("model/Data.json"); //here the path so I suppose here the problem
  oModel.attachRequestCompleted(function() {
    oBusy.close();
  });
  this.getView().setModel(oModel, "CompaniesModel")
}

在 webapp/controller/App.contoller.js 中测试 2

onInit: function () {
  var oBusy = new sap.m.BusyDialog();
  var oModel = new JSONModel();
  oModel.attachRequestSent(function() {
    oBusy.open();
  });
  oModel.loadData("../model/Data.json"); //here the path so I suppose here the problem
  oModel.attachRequestCompleted(function() {
    oBusy.close();
  });
  this.getView().setModel(oModel, "CompaniesModel")
}

在 webapp/controller/App.contoller.js 中测试 3

onInit: function () {
  var oBusy = new sap.m.BusyDialog();
  var oModel = new JSONModel();
  oModel.attachRequestSent(function() {
    oBusy.open();
  });
  oModel.loadData("my/namespace/model/Data.json"); //here the path so I suppose here the problem
  oModel.attachRequestCompleted(function() {
    oBusy.close();
  });
  this.getView().setModel(oModel, "CompaniesModel")
}

附录 - 重现过程:

在 Webide for SAPUI5 中,从模板 SAPUI5 应用程序选择 SAP 版本 1.38.39 创建新的,初始化您的命名空间和您的视图/控制器名称。
在模型中创建新的 Data.json :

{
    "Set1": [{
        "Status": "status1",
        "Number": 10
    }, {
        "Status": "status2",
        "Number": 20
    }, {
        "Status": "status3",
        "Number": 30
    }, {
        "Status": "status4",
        "Number": 40
    }]
}

在您看来:

<mvc:View 
    controllerName="your.namespace.controller.App" 
    xmlns:l="sap.ui.layout" 
    xmlns:core="sap.ui.core" 
    xmlns:mvc="sap.ui.core.mvc"
    xmlns:viz="sap.viz.ui5.controls"
    xmlns:viz.feeds="sap.viz.ui5.controls.common.feeds"
    xmlns:viz.data="sap.viz.ui5.data"
    xmlns:com="sap.suite.ui.commons" 
    xmlns="sap.m">
    <Shell id="shell">
        <App id="app">
            <pages>
                <Page id="page" title="{i18n>title}">
                    <content>
                        <l:VerticalLayout class="sapUiContentPadding" width="100%">
                            <com:ChartContainer id="chartContainer" showFullScreen="true" showPersonalization="false" autoAdjustHeight="false"
                                personalizationPress="attachPersonalizationPress" contentChange="attachContentChange" title="chart">
                                <com:content>
                                    <com:ChartContainerContent icon="sap-icon://line-chart" title="Line Chart">
                                        <com:content>
                                            <viz:VizFrame id="idVizFrame_1" height='400px' width="100%" vizType='column' uiConfig="{applicationSet:'fiori'}">
                                                <viz:dataset>
                                                    <viz.data:FlattenedDataset data="{CompaniesModel>/Set1}">
                                                        <viz.data:dimensions>
                                                            <viz.data:DimensionDefinition name="Status" value="{CompaniesModel>Status}"/>
                                                        </viz.data:dimensions>
                                                        <viz.data:measures>
                                                            <viz.data:MeasureDefinition name="Number" value="{CompaniesModel>Orders}"/>
                                                        </viz.data:measures>
                                                    </viz.data:FlattenedDataset>
                                                </viz:dataset>
                                                <viz:feeds>
                                                    <viz.feeds:FeedItem uid="valueAxis" type="Measure" values="Number"/>
                                                    <viz.feeds:FeedItem uid="categoryAxis" type="Dimension" values="Status"/>
                                                </viz:feeds>
                                            </viz:VizFrame>
                                        </com:content>
                                    </com:ChartContainerContent>
                                </com:content>
                            </com:ChartContainer>
                        </l:VerticalLayout>
                    </content>
                </Page>
            </pages>
        </App>
    </Shell>
</mvc:View>

在您的控制器中:

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel",
], function (Controller, JSONModel) {
    "use strict";

    return Controller.extend("your.namespace.controller.App", {
        onInit: function () {
          //copy here one of the controller described in Problem in code & test
        }
    });
});

编辑(清单以外的其他选项):

如果您不想使用清单,我会在此处添加这种可能性,对于使用清单,请转到@Cmdd 的已接受答案:)
如果您不想使用清单,您可以这样做:

oModel.loadData("../../../../../webapp/model/Data.json");

#1楼 票数:2 已采纳

最好的方法是在manifest.json加载数据, 如此链接中所述。

在“sap.app”部分:

"sap.app": {
    ...
    "dataSources": {
        "myModel_alias": {
            "uri": "model/Data.json",
            "type": "JSON"
        }
    }
}

在“sap.ui5”部分:

    "models": {
        "i18n": {
            "type": "sap.ui.model.resource.ResourceModel",
            "settings": {
                "bundleName": "cmdd.Test.i18n.i18n"
            }
        },
        "CompaniesModel": {
            "type": "sap.ui.model.json.JSONModel",
            "dataSource": "myModel_alias"
        }           
    },

另外,不要忘记在此绑定中添加斜杠: data="{CompaniesModel>/Set1}" :)

  ask by SylwekFr translate from so

未解决问题?本站智能推荐:

1回复

在SAPUI5/OpenUI5中更新JSON模型

我有一个json模型model / salesOrder.json, 初始化, 在创建Sales Order ,创建一个具有直接键(如FirstName , LatName等)的对象。 并在没有任何键的情况HeaderSet送到此HeaderSet数组。 假设我在这个模型中有3个对
1回复

在View[sapui5]中查看来自控制器的模型数据

我已经在控制器中创建了JSON模型,并且在那里有不错的数据列表...但是我不知道如何通过相应的视图访问此列表/模型。 救命?
1回复

SAPUI5设置JSON模型

我得到了一些需要的数据包: 现在,我需要将其放入JSON模型中,以便能够使用此数据。 为了检索数据,我有我的Controller类,并且用法必须在View类中。 我该如何解决这个问题? 我已经读过类似的东西将它们放入JSON模型中。 如何通过上述配置使用从JavaScript类获
1回复

通过xsodata访问SAPUI5中的JSON对象

我尝试在sap ui5中访问json对象的值,但是getproperty函数无法访问所需的数据。 但是,首先,我创建了一个带有一些服务定义的xsodata文件,例如 然后,我尝试使用以下代码在view.js文件中获取这些数据: 当我使用console.log(oModel)时,我在od
1回复

控制器方法中的本地JSON文件和数据

这是我在控制器init方法中的代码: 查看声明创建内容 上面的视图和控制器init方法中的代码可以很好地工作,自定义列表VBox中的项是从数据的更新数组中聚合而来的。 当相同的数据保存在本地json文件中时,并使用此行代码 VBox的循环失败,因为我们无法循环该对象。 当我两
1回复

SAPUI5为TreeTable/空行创建JSON

我想从JSON请求创建一个SAPUI TreeTable,目前我的输出看起来像这样(你可以看到,每个节点都包含一个空行 - >我不知道它来自哪里,我不想让这些空行): 我的表定义: 我的getJSON并将平面结构转换为父/子结构(感谢yaku ) 我的结果JSON(它的一部分)
1回复

如何删除填充有json模型的网格表中的一行?SAPUI5

当我单击垃圾箱按钮时,我需要删除与 jModel 绑定的表中的一行。 这是我的数据: 模型名称是 jModel。 也许我在这里的模型中有一些错误,但代码是正确的。 该表是单模式下的网格表。 这是我的“垃圾箱”按钮事件。 我不知道如何做第一步。 我知道我需要使用拼接原型,但我不知道如何获取对象在数组
1回复

如何在SAPUI5应用程序中删除对“library-preload.json”的可选调用?

我正在使用cordova开发SAPUI5移动应用程序。 现在,我需要在项目中包含另一个库(cordova-plugin-file)。 我已经尝试过执行此操作,但是我的问题是,如果包含该插件,我的“ sap-ui-core.js”文件将尝试加载“ library-preload.json”(请