我对GWT历史机制的例子感到有些困惑。
查看并运行示例GWT History,它似乎不太好。
历史经常被解释为应用程序中的更改所导致的内容。
该示例有多个问题:
初始状态也是空令牌和令牌“page0”
- > “历史”背面在“离开应用程序”
历史和国家以某种方式间接同步。
从另一个角度看这个问题是不是错了?
我认为总是根据历史记录更改状态会更加清晰。
在这种情况下,ValueChange
将实现“状态渲染”。想要更改状态的按钮不会直接执行,而是使用History.newItem()
方法,并使用valueChange
方法间接更改状态。
e.g。
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if(token.isEmpty()){
show("welcome");
}else if(token.equals("registration")){
show(token);
}
}
还有一个想要显示注册的按钮:
welcome = new Button("Registration", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
History.newItem("registration");
}
});
这是以某种方式使用历史来驱动应用程序状态。
这有什么不对,为什么到处都是相反?
答案 0 :(得分:0)
GWT历史记录确实提供了设置令牌without causing the on history changed method to be called History.newItem("registration", false);
至于你单独关于GWT历史的建议,ValueChange会实现“状态渲染”,这在你需要传递多个String来设置状态的情况下是行不通的。在这种情况下,我设置了一个令牌,然后使用MVC将视图所需的任何数据转发到渲染。
无论如何,我绝对不会通过onValueChange来选择一个标签。我使用tabPanel.selectTab(tabNum);
FWIW,GWT思想的当前状态从历史变为使用Activities and Places
你可能希望看到它可能更好地与你想要做的事情保持一致。