对于我为GWT的历史机制找到的例子,我感到有点困惑。
查看并运行示例GWT历史,它似乎不是很好。
历史通常被解释为应用程序中的更改所产生的结果。
该示例存在多个问题:
- A Tab selection causes a selection event, which sets a new token. Settings the token causes a History Value Change, that selects the same tab again (?). That pattern is kind of mindtwisting.
从另一个角度来看待这个问题是否真的是错误的呢?
我认为,按照历史的象征,总是改变状态会更清洁。
在这种情况下,ValueChange将实现“状态呈现”。想要更改状态的按钮不会直接使用History.newItem()方法,而是使用valueChange方法间接地更改状态。
例如:
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");
}
});这在某种程度上使用历史来驱动应用程序状态。
这有什么不对,为什么到处都是相反的方法呢?
发布于 2013-02-11 00:01:41
GWT历史确实提供了一种设置令牌而不导致调用on历史记录更改方法。 History.newItem("registration", false);的方法
至于您专门针对GWT的建议,ValueChange将实现“状态呈现”,在需要传递多个字符串来设置状态的情况下,这是行不通的。在这种情况下,我设置了如上的令牌,然后使用MVC将需要的数据转发到视图以进行呈现。
在任何情况下,我肯定不会为了选择一个选项卡而通过onValueChange。我使用的是类似于tabPanel.selectTab(tabNum);的东西
FWIW,GWT思想的当前状态从历史发展到使用活动和地点。
你可能想看到这一点,因为也许它更符合你正在努力做的事情。
https://stackoverflow.com/questions/14797881
复制相似问题