1

我是 GWT 的新手,找不到答案:我有一个很好的用于 TextBox 的 UIBinder,它可以工作,我有 UIHandler 可以使用它,好的。但是,如果我想在整个 HTML 中显示来自这个 TextBox 的值怎么办?有没有一种方法可以声明一个变量以在整个 HTML 中重用该值,或者每次我想在一个 html 页面上显示值时,我应该用新的 ui:field 名称声明新标签,并用 UIHandler 填充每个这样的标签(我可以马上做,但这看起来很无聊)?

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
    <g:TextBox  ui:field="myField"/><br/>        
    <div>            
        <p>                
            What do I need to put here if i want to see **myField.getValue()** in html, may be even multiple times? 
            And **here**?
            I want to avoid creation of new and new objects in back-end class for just one value, multiple labels here are ok. How to push one value in all of them, when myField content is changed?
        </p>            
    </div>
</g:HTMLPanel>

4

1 回答 1

3

在 MVC 代码中设计 GUI 有两种方法(无论这意味着什么):

  • GUI 很智能,可以从模型中提取数据,通常在某些事件发生时(数据绑定属于此类),
  • GUI 很愚蠢,因此数据由控制器推送到视图中(有时称为被动视图)。

两者都有其优点和缺点,但重要的是:当您尝试将它们结合起来时,优点会相互抵消,并且缺点会累积。那就是您最终会遇到每种模式的缺点和一团糟。

UIbinder 是一个工具,可以帮助您构建一个愚蠢的视图,如 MVP 模式中使用的那样。它可以帮助您轻松创建一堆对象,当您将数据推送到其中时,这些对象将重绘部分视图。他们不应该是智能实体。所以无聊的方式似乎是要走的路。

顺便说一句,不想使用标签有点奇怪:您需要一个对象来更新部分 ui(它是 Java,我们就是使用对象!)。碰巧这种类型的对象存在并被称为Label. 如果叫同一个班级,你会更喜欢AnAutomaticHtmlUpdaterThatRequiresNoLabelWhatsoever吗?

于 2013-04-15T18:01:07.783 回答