我已将setBusy在我的应用程序中的其他位置执行,但为什么不在这里......
这是在我的网站详细信息中阅读,因此如果没有setbusy,页面看起来就像什么都不做。
_onRouteMatched: function (oEvent) {
//initialise display
var view = this.getView();
view.setBusy(true);
view.byId("shopInput").setValue("");
view.byId("effectiveDateFrom").setValue("");
view.byId("shop24Hrs").setSelected(false);
view.byId("shopClosed").setSelected(false);
view.byId("createNext").setVisible(false);
view.byId("createSubmit").setVisible(false);
//view.byId("createSave").setVisible(false);
// initialise the store view model
var oModel = this.getModel("site");
this.getModel().read("/SiteSet", {
success: function (oData) {
var oSiteData = oModel.getData();
oSiteData.Sites = oData.results;
oModel.setData(oSiteData);
}.bind(this)
});
view.setBusy(false);
},
任何想法?
答案 0 :(得分:1)
实际上您的代码设置繁忙但会立即重置。 read方法是异步的。您必须在成功回调函数内重置繁忙(在错误回调中重置它也是一个好主意)。
_onRouteMatched: function (oEvent) {
//initialise display
var view = this.getView();
view.setBusy(true);
view.byId("shopInput").setValue("");
view.byId("effectiveDateFrom").setValue("");
view.byId("shop24Hrs").setSelected(false);
view.byId("shopClosed").setSelected(false);
view.byId("createNext").setVisible(false);
view.byId("createSubmit").setVisible(false);
//view.byId("createSave").setVisible(false);
// initialise the store view model
var oModel = this.getModel("site");
this.getModel().read("/SiteSet", {
success: function (oData) {
var oSiteData = oModel.getData();
oSiteData.Sites = oData.results;
oModel.setData(oSiteData);
view.setBusy(false);
}.bind(this),
error: function(){
view.setBusy(false);
}
});
},
通常在使用setBusy()时,您应该注意以下几点:
setBusy(true)
后1000毫秒显示。有一个setBusyIndicatorDelay()
函数来控制延迟(可以设置为0)。setTimeout()
)。 JavaScript是单线程的。因此,如果调用setBusy()
后的代码阻塞,则在代码完成并且控制流返回到事件循环之前,不会显示繁忙指示符。所以不要试试这个:setBusy(true); model.loadData("/data", false /*synchronous*/); setBusy(false);
答案 1 :(得分:0)
您可以创建一个繁忙的对话框对象,然后分别在成功回调和错误回调中使用打开和关闭功能。请看一下代码: -
_onRouteMatched: function (oEvent) {
//initialise display
var busyDialog= new sap.m.BusyDialog;
view.byId("shopInput").setValue("");
view.byId("effectiveDateFrom").setValue("");
view.byId("shop24Hrs").setSelected(false);
view.byId("shopClosed").setSelected(false);
view.byId("createNext").setVisible(false);
view.byId("createSubmit").setVisible(false);
//view.byId("createSave").setVisible(false);
// initialise the store view model
var oModel = this.getModel("site");
busyDialog.open();
this.getModel().read("/SiteSet", {
success: function (oData) {
busyDialog.close();
var oSiteData = oModel.getData();
oSiteData.Sites = oData.results;
oModel.setData(oSiteData);
}.bind(this)
});
busyDialog.close();
},