我正在进一步探索OpenUI5 5/SAPUI5 5库,以便在其中显示数据。这一次,我尝试加载一个XML视图,但是找不到文件。这不是一个很大的问题,但这是令人沮丧的,因为它只有当我把视图文件放在一个特定的文件夹。我搜索并找到了一堆教程,这些教程对如何组织项目提供了帮助。我遵循了所描述的步骤,但不起作用。
我想要达到的目标:将视图文件放在我喜欢的文件夹中。
问题:库找不到那些视图。
到目前为止我所做的:
我有一个文件夹视图,它包含文件夹OpenUI5,它包含两种东西-- ViewName.cshtml和一个名为“视图”的文件夹。在“视图”文件夹中,我有A1.view.xml,它非常简单,如下所示:
<mvc:View
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<Text text="Hello!" />
</mvc:View>在医生里,他们说
data-sap-ui-resourceroots='{
"sap.views": "./"
}'将params对象的sap.views替换为新的sap.ui.xmlview()属性中的'./',如果您写的是'./‘,那么您就意味着“根目录”。
这是主要的问题和误解。他们说,在这些教程和文档中,到处都是保存html页面index.html的根dir。因此,我想,在我的例子中,根dir应该是文件夹OpenUI5,它包含ViewName.cshtml。我试着把它重命名为index.cshtml,这根本没有效果。
我发现根dir实际上是sap-ui-core.js所在的dir。我通过从脚本标记中删除data ui-resourceroots=‘“来测试并得出了这个结论,该标记初始化了库,并将我的视图命名为A1:
sap.ui.getCore().attachInit(function () {
new sap.ui.xmlview({
viewName: "A1"
}).placeAt("testView");
});现在,如果A1.view.xml位于sap-ui-core.js所在的文件夹中,则会找到并呈现它。
我试图将A1.view.xml放入sap-ui-core.js所在文件夹的子文件夹“sap”中,并将其呈现如下:
sap.ui.getCore().attachInit(function () {
new sap.ui.xmlview({
viewName: "sap.A1"
}).placeAt("testView");
});又一次起作用了。
我的问题:如何上升一个级别?说,在视图中,我在文件夹OpenUI5(包含ViewName.cshtml)中添加了一个同级文件夹,这个文件夹名为OpenUI5XmlViews,我在这里放置了A1.view.xml。
sap-ui-core.js位于脚本/OpenUI5 5/中,文件夹脚本是文件夹视图的同级。考虑到所有这些,为了让它发挥作用,我希望能够做这样的事情:
<script id='sap-ui-bootstrap'
src='@Url.Content("~/Scripts/OpenUI5/sap-ui-core.js")'
data-sap-ui-theme='sap_bluecrystal'
data-sap-ui-libs='sap.m,sap.ui.commons,sap.ui.table'
data-sap-ui-compatversion='edge'
data-sap-ui-preload='async'
data-sap-ui-resourceroots='{
"sap.xmlviews": "../../../Views/OpenUI5XmlViews"
}'>
</script>
sap.ui.getCore().attachInit(function () {
new sap.ui.xmlview({
viewName: "sap.xmlviews.A1"
}).placeAt("testView");
});我认为这应该会产生路径/视图/OpenUI5XmlViews/A1.view.xml,但它不会。求你了,帮我实现它?谢谢。
编辑:这里是我在浏览器控制台中获得的错误:
Uncaught (in promise) Error: resource sap/views/A1.view.xml could not be loaded from ../../../Views/OpenUI5XmlViews/A1.view.xml. Check for 'file not found' or parse errors. Reason: Not Found也不像这样工作:
Uncaught (in promise) Error: resource sap/views/A1.view.xml could not be loaded from ./././Views/OpenUI5XmlViews/A1.view.xml. Check for 'file not found' or parse errors. Reason: Not Found发布于 2016-11-22 12:23:10
您正在定义一个重新源根:
data-sap-ui-resourceroots='{
"sap.xmlviews": "../../../Views/OpenUI5XmlViews"
}'>因此,您定义了一种名称空间"sap.xmlviews“,它指向相对于index.html文件的文件夹路径。这与sap-ui-core.js framewrok路径无关。
因此,如果您尝试使用您定义的ressourceroot中的视图A.view.xml,就必须编写ist,比如sap.xmlviews.A。看看这个例子:https://sapui5.netweaver.ondemand.com/sdk/#docs/guide/1409791afe4747319a3b23a1e2fc7064.html
发布于 2016-11-28 15:58:03
好的,
我不知道你在做什么,但是一个好的做法是使用mvc模式创建目录树:
webapp
+model
+view
++A1.view.xml
+controller
++A1.controller.js
+index.html并为根文件夹设置名称空间:
<script id='sap-ui-bootstrap'
src='@Url.Content("~/Scripts/OpenUI5/sap-ui-core.js")'
data-sap-ui-theme='sap_bluecrystal'
data-sap-ui-libs='sap.m,sap.ui.commons,sap.ui.table'
data-sap-ui-compatversion='edge'
data-sap-ui-preload='async'
data-sap-ui-resourceroots='{
"sap.myapp": "./"
}'>
</script>所以youi可以在index.html中调用您的视图:
sap.ui.getCore().attachInit(function () {
new sap.ui.xmlview({
viewName: "sap.myapp.view.A1"
}).placeAt("testView");
});https://stackoverflow.com/questions/40723510
复制相似问题