我有一个包含三个不同页面的UI5应用程序。
我遇到的问题是,当第二次尝试返回页面时,My CoolVC
函数不会被调用。看起来浏览器会将数据缓存在屏幕上,并且不会按我的意愿重置值。我必须刷新浏览器才能使其正常工作。
这是我的路由配置:
const menu = $('.menu_list li');
const pages =$('.pages').children();
menu.each(function( index ) {
$(this).on('click', () =>{
pages[i].addClass('show');
});
})
以下是我切换页面的不同控制器的代码片段
控制器1
onInit()
控制器2
routing: {
config: {
routerClass: "sap.m.routing.Router",
viewPath: "BatchProcessing.view",
controlId: "rootControl",
controlAggregation: "pages",
viewType: "XML"
},
routes: [
{
name: "page1",
pattern: "",
target: "page1"
},
{
name: "page2",
pattern: "Page2",
target: "page2"
},
{
name: "page3",
pattern: "Page3",
target: "page3"
}
],
targets: {
page1: {
viewName: "InputsView",
viewLevel: 0
},
page2: {
viewName: "TableView",
viewLevel: 1
},
page3: {
viewName: "DetailsView",
viewLevel: 3
}
}
}
控制器3
onToPage2 : function () {
this.getOwnerComponent().getRouter().navTo("page2");
},
有没有办法更新/清除路由,所以当我回到页面时,一切都很新鲜?
答案 0 :(得分:1)
在控制器中使用Router的attachRouteMatched()/ attachRoutePatternMatched()方法来重置数据,例如:
onInit: function() {
sap.ui.core.UIComponent.getRouterFor(this)
.attachRoutePatternMatched(this.onRouteMatched, this);
},
onRouteMatched: function(oEvent) {
this.sRouteName = oEvent.getParameters().name;
// Check route and reset your data
}
https://sapui5.hana.ondemand.com/#/api/sap.ui.core.routing.Router