我想在 Dojo 选择框 (dijit.form.select) 中显示来自 JsonRest 的 JSON。因此,我有以下代码:
var processStore = new JsonRest({
target: "http://cnwin.ebusiness.local/activiti-rest/service/repository/process-definitions?startableByUser=kermit",
headers: {"Authorization": "Basic a2VybWl0Omtlcm1pdA=="},
allowNoTrailingSlash: false
});
var myWidget = dijit.byId("processList");
myWidget.setStore(processStore);
this.show();
This
是一个 dijit/对话框。此代码工作正常并且显示对话框。但 REST-Call 是异步的。当我在此代码块周围添加以下方法时,行 this.show()
不再工作:
var processStore = new JsonRest({
target: "http://cnwin.ebusiness.local/activiti-rest/service/repository/process-definitions?startableByUser=kermit",
headers: {"Authorization": "Basic a2VybWl0Omtlcm1pdA=="},
allowNoTrailingSlash: false
});
processStore.query().then(function(response){
var myWidget = dijit.byId("processList");
myWidget.setStore(processStore);
this.show();
}
使用 printlns,我可以看到除了最后一个命令( this.show()
)之外的所有命令都已执行
有人有想法吗?
感谢您的回答和最诚挚的问候 本
最佳答案
我认为 this.show() 不再在对话框的范围内。
您可能想尝试以下操作:
var processStore = new JsonRest({
target: "http://cnwin.ebusiness.local/activiti-rest/service/repository/process-definitions?startableByUser=kermit",
headers: {"Authorization": "Basic a2VybWl0Omtlcm1pdA=="},
allowNoTrailingSlash: false
});
var self = this; // You can keep the scope of this saved
processStore.query().then(function(response){
var myWidget = dijit.byId("processList");
myWidget.setStore(processStore);
self.show(); // Now self points to the dialog box
}
通过添加 var self = this;然后在函数中使用 self.show() , self 应该是对话框。
关于javascript - Dojo Dialog.show() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22403864/