0

我对我为 GWT 的历史机制找到的示例感到有些困惑。

查看并运行示例GWT History似乎不是很好。

历史通常被解释为应用程序更改的结果。

该示例有多个问题:

  • 初始状态也是空令牌和令牌“page0”

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

  • 历史和状态以某种方式间接同步。

    • Tab 选择会引发一个选择事件,该事件会设置一个新标记。设置令牌会导致历史值更改,再次选择相同的选项卡 (?)。这种模式有点令人费解。

换个角度看问题会不会错?

我认为总是根据历史令牌更改状态会更干净。

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

这以某种方式使用历史来驱动应用程序状态。

这有什么问题,为什么到处都是反其道而行之?

4

1 回答 1

0

GWT History 确实提供了一种设置令牌的方法,而不会导致调用 on history changed 方法 History.newItem("registration", false);

至于您仅针对 GWT History 的建议,ValueChange 将实现“状态渲染”,这在您需要传递多个字符串来设置状态的情况下将不起作用。在这种情况下,我如上所述设置了一个标记,然后使用 MVC 将所需的任何数据转发到视图以进行渲染。

无论如何,我绝对不会通过 onValueChange 来选择一个选项卡。我使用类似的东西tabPanel.selectTab(tabNum);

FWIW,GWT 思维的当前状态从历史转移到使用活动和地点

您可能希望看到这一点,因为它可能更符合您正在尝试做的事情。

于 2013-02-11T00:01:41.743 回答