如何在 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();
});
但欢迎更好的解决方案。
在主视图的 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();
});
但欢迎更好的解决方案。