Model view controller 如何通过控制器在SAPUI5触发器中显示对话框而不是视图事件?(推送通知)
在主视图的SAPUI5控制器中,我触发一个Model view controller 如何通过控制器在SAPUI5触发器中显示对话框而不是视图事件?(推送通知),model-view-controller,sapui5,Model View Controller,Sapui5,在主视图的SAPUI5控制器中,我触发一个oModel.read()请求来读取一些数据(异步)。每次在导航期间到达页面时,都会执行此读取 onInit: function() { var that = this; this.getRouter().getRoute("PageName").attachMatched(this.onRouteMatched, this); }, onRouteMatched : function(oEvent) { ... oModel.read
oModel.read()
请求来读取一些数据(异步)。每次在导航期间到达页面时,都会执行此读取
onInit: function() {
var that = this;
this.getRouter().getRoute("PageName").attachMatched(this.onRouteMatched, this);
},
onRouteMatched : function(oEvent) {
...
oModel.read(....); // this will be done async
...
},
应用程序应该是正常呈现的(具有正常绑定)
上述读取将从服务器加载一些消息,并将其与本地模型同步。现在,如果出现新消息,应显示一个对话框
这里是我的问题:在控制器中放置dialog.open()
调用的位置(什么事件?),以便显示对话框
现在,我尝试了在渲染后使用onAfterRendering
,在那里,它完全适用于第一次调用。对于进一步的呼叫,我看不到任何对话框。如果我将“打开”对话框放在“路由匹配”对话框中,我可以看到一个短的闪烁
所以问题是,打开对话框应该在呈现应用程序的其余部分之后完成。但如何做到这一点呢?与此同时,我有一个黑客破解的解决方案。 在控制器的
onInit
方法中,我注册到onmousemove
事件。每次移动鼠标时,我都可以检查是否有一些数据要显示
this.getView().attachBrowserEvent("mousemove", function(oEvent) {
this.onCheckForMessages();
});
但我们欢迎更好的解决方案