2013-02-10 212 views
0

我对GWT的历史机制找到的例子有些困惑。GWT历史记录 - 州/州是否创建历史或历史结果?

寻找并运行示例GWT History它似乎不是很好。

历史常常被解释为由应用程序中的更改导致的结果。

的例子有多个问题:

  • 初始状态,以及空令牌和令牌“页0/0”

    - >“历史记录”回到显示在同一页面两次离开前”应用程序“

  • 历史和状态在某种程度上是间接同步的。

    • 选项卡选项会导致一个选择事件,该事件设置一个新的令牌。设置令牌导致 历史值更改,再次选择相同的选项卡(?)。这种模式是一种心灵扭曲。

难道是错的来看看从另一个角度看这个问题?

我认为总是根据历史记号改变状态要容易得多。

在这种情况下,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");     
     } 
    }); 

这在某种程度上利用历史来驱动应用的状态。

这是怎么回事,为什么到处都是这样?

回答

0

GWT历史确实提供了一种方法来设置令牌without causing the on history changed method to be calledHistory.newItem("registration", false);

至于你的建议,特别是关于单独GWT历史,ValueChange将贯彻落实“国务院渲染”,在这里你需要传递,不会在情况下工作多于一个字符串来设置状态。在这种情况下,我如上设置了一个标记,然后使用MVC将任何需要的数据转发到视图进行渲染。

在任何情况下,我绝对不会通过onValueChange来选择一个选项卡。我用相当类似tabPanel.selectTab(tabNum);

FWIW,GWT的当前状态从思维只是历史搬到使用Activities and Places

您可能希望看到,作为也许与你想有什么更好的对齐的事情。