如何在 SAPUI5 中显示由控制器触发的对话框而不是视图事件? (推送通知)

How to show a dialog in SAPUI5 triggerd by the controller and not a view event? (Push notification)

在主视图的 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 并且它正好适用于第一次调用。对于进一步的呼叫,我看不到任何对话。如果我将打开的对话框放在 onRouteMatched 中,我会看到短暂的闪烁。

所以问题是,打开对话框应该在呈现应用程序的其余部分之后完成。但是如何达到这个目的呢?

与此同时,我有一个破解的解决方案。 在控制器的 onInit 方法中,我注册了 onmousemove 事件。每次移动鼠标我都可以检查是否有一些数据可以显示。

this.getView().attachBrowserEvent("mousemove", function(oEvent) {
    this.onCheckForMessages();
});

但欢迎更好的解决方案。