在我的应用程序中,我选择了一个单选按钮字段。当我打开页面时,所选字段有一些延迟。示例:我打开页面,单选按钮处于未选中状态,经过一段时间(比如像在屏幕上滚动/滚动),单选按钮变为选中状态。有没有其他方法可以解决这种延迟?
var memoryStore = new Memory({
data: [{
id: "root",
name: "ROOT",
loaded: true
}, ],
getChildren: function(object) {
return this.query({
parent: object.id
});
},
clearOnClose:true
});
var myStore = new Observable(memoryStore);
var myModel = new TreeStoreModel({
store: myStore,
query: {
id: "root"
},
labelAttr: "label",
pasteItem: function(child, oldParent, newParent, copy, insertIndex) {
// SEND NOTIFICATION, DO QUERIES
}
});
var tree = new Tree({
model: myModel,
dndController: dndSource
});
在上面的代码中,“item”是小部件字段名称,根据我的“getselected”值,将选择单选图标。这里我的“getSelected”值是真的。
答案 0 :(得分:0)
scheduleDeferred
中的任何代码都将推迟执行,直到浏览器完成呈现页面并且流控制返回到Javascript事件循环,如GWT's documentation中所述:
将一些逻辑推迟到近期:调度程序类
有时您想要分解逻辑循环,以便JavaScript事件循环有机会在两段代码之间运行。Scheduler
课程允许您这样做。在将控制权返回到JavaScript事件循环之后,传递给Scheduler的逻辑将在将来的某个时刻运行。这种小延迟可能使接口有机会处理某些用户事件或初始化其他代码。要以最简单的形式使用Scheduler
类,您需要创建Command
类的子类,覆盖execute()
方法并将其传递给Scheduler.scheduleDeferred
如果你想要的是立即选择单选按钮,只需删除Scheduler
包装,即从statementGroupSelectionModel.setSelected(item, profile.getSelected());
移出scheduleDeferred
。
// Put this here
statementGroupSelectionModel.setSelected(item, profile.getSelected());
// Remove the following code
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
...
});
如果您想要的不是那个(抱歉,您的解释还不清楚),但只是为了能够自己设置延迟时间而不必等待浏览器,您可以使用Timer
类这在上面链接的文档中有解释。