带有独立控制器的SAPUI5 IconTab可处理延迟加载



这个问题是关于懒惰加载的。我阅读了帮助门户,但那是针对"一个控制器案例"的。其中指出,懒惰加载应在以下情况下实施:

在实际用例中,您会对包含大量内容或触发对后端服务的昂贵服务调用的选项卡执行此操作。

但没有提到如何触发控制器RouteMatched事件,因为.getTargets().display("name")不会触发该事件。

之所以这样问,是因为Parent的本地视图JSON模型有数据,这些数据是在Parent的Controllers_onObjectMatched函数中收集的,即this.sObjId= oEvent.getParameter("arguments").objectId;与我在嵌套控制器中需要的信息相同——在单击Tab时发送带有这些参数的GET请求。

此外,从Parent的ViewModel中获取属性的变通方法也可以。

我不想在TabSelect事件上使用.navTo函数,因为它每次都会触发Route match,所以如果我在选项卡之间切换,就会发送多个相同的GET。

关于IconTabFilter应如何与单独的控制器一起工作的说明,不胜感激!

谢谢,Shanir

有点晚了,但:我也无法通过路由解决这个问题,attachDisplay也没有帮助,因为它没有上下文信息。所以我使用了EventBus,它起了作用:

在您的详细控制器绑定方法:

this.getView().bindElement({
path: ...,
events: {
dataReceived: function () {
sap.ui.core.Component.getOwnerComponentFor(that.getView()).getEventBus().publish(
"BindingDone", {
oContext: that.getView().getBindingContext()
}
);
}

然后在您的控制器中查看IconTabBar内容:

onInit: function () {
var oEventBus = sap.ui.core.Component.getOwnerComponentFor(this.getView()).getEventBus();
oEventBus.subscribe(
"BindingDone",
this.onBinding,
this
);
},

onBinding: function (sChannelId, sEventId, oData) {
this.getView().setBindingContext(oData.oContext);
}

它绕过了整个路由机制,所以如果有人有更好的解决方案,请纠正我。

最佳,Marcus

最新更新