刷新页面时,动态创建的视图无法重新加载。

2020-09-04 21:01发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我要求从服务返回的xml字符串动态生成视图,并允许将数据绑定到该视图。 我能够使用sap.ui.core.mvc.XMLView.create方法创建视图,并能够通过使用以下代码行将视图添加到路由器的目标中来进行导航:

 sap.ui.core.mvc.XMLView.create({
 定义:this.viewString,
 类型:sap.ui.core.mvc.ViewType.XML
 })。then(function(oView){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 var oTargets = oRouter.getTargets();


 oTargets.getViews()。setView(" com.sampleapp.SampleApp.view.View2",oView);

//oTargets.display("Dynamic");
 oRouter.navTo(" DynamicView");


 }
 

现在,我可以单击view2的控制器,并且绑定也可以正常工作,但是一旦刷新页面,错误就会出现。 据我了解,这是因为当路由器尝试加载与路由模式相对应的视图时,但由于它是通过xml字符串创建的,因此它不存在于文件夹结构中。

我的问题是:可以避免这样的错误吗? 我的意思是能够在刷新时加载页面?

感谢您的帮助。

(26.9 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我要求从服务返回的xml字符串动态生成视图,并允许将数据绑定到该视图。 我能够使用sap.ui.core.mvc.XMLView.create方法创建视图,并能够通过使用以下代码行将视图添加到路由器的目标中来进行导航:

 sap.ui.core.mvc.XMLView.create({
 定义:this.viewString,
 类型:sap.ui.core.mvc.ViewType.XML
 })。then(function(oView){
 var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
 var oTargets = oRouter.getTargets();


 oTargets.getViews()。setView(" com.sampleapp.SampleApp.view.View2",oView);

//oTargets.display("Dynamic");
 oRouter.navTo(" DynamicView");


 }
 

现在,我可以单击view2的控制器,并且绑定也可以正常工作,但是一旦刷新页面,错误就会出现。 据我了解,这是因为当路由器尝试加载与路由模式相对应的视图时,但由于它是通过xml字符串创建的,因此它不存在于文件夹结构中。

我的问题是:可以避免这样的错误吗? 我的意思是能够在刷新时加载页面?

感谢您的帮助。

(26.9 kB)
付费偷看设置
发送
5条回答
三十六小时_GS
1楼 · 2020-09-04 21:50.采纳回答

嗨,Mahesh,我不确定是什么造成了这个问题,但是我找到了一种解决方法来完成我想要的事情。 它不是很优雅,但是暂时可以完成工作。

我所做的不是为动态创建的视图添加路由和目标,而是添加了另一个视图层:midView,然后从view1导航到midView,我只是添加了一个新的目标 动态创建的视图,并使用targets.display方法显示它。

因此没有为此特定的dymanicView创建路线,并且在midView的路线上起作用。 刷新工作正常,导航堆栈也是如此。

微wx笑
2楼-- · 2020-09-04 21:54

嗨,Aditya,

确定解决了吗?

BR,
Mahesh

奄奄一息的小鱼
3楼-- · 2020-09-04 22:06

在此处放置一个空视图,然后在需要时使用您的代码加载内容。

小c菟菟
4楼-- · 2020-09-04 22:05

这就是我告诉您的操作.....

# p#

不知道您在说什么

在其中插入一个空视图

在调用该视图时,填充内容

My梦
5楼-- · 2020-09-04 21:59
< p>您好Jun

我不明白。

view1正在从服务中加载xml字符串,该服务又会生成view2的内容。

完成后,我将导航到代码中显示的动态创建的view(view2)。

如果我要放一个空视图,那么在重新加载时会出现错误(该视图未返回任何数据)。

要加载view2的内容(现在已经导航到该视图),我必须调用已经在view1的控制器中调用的服务。

如果我将view2链接到view1的控制器,则在重新加载时会遇到相同的错误(该视图未返回任何数据)。

如果我要将view2的控制器更改为仅用于view2的新控制器,那么我需要再次调用该服务并使用Create方法来生成另一个视图,因为该服务正在返回包含视图控件的xml。 因此要显示它,我再次需要导航到相同的路由(view2的路由),这再次导致相同的问题(该视图没有返回任何数据)。

我不确定如何解决此问题,在这种情况下,您的建议似乎无效。

一周热门 更多>