Model view controller 如何通过控制器在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

在主视图的SAPUI5控制器中,我触发一个
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();
});
但我们欢迎更好的解决方案