1

功能UIObject#setVisible(false)上不同于?Widget#removeFromParent

此外,DialogBox#hide只是对 wapper 的调用UIObject#setVisible(false)吗?

有什么实际的例子吗?

4

2 回答 2

2

UIObject#setVisible在元素上设置 CSS 'display' 属性。如果你有一个HTMLPanel并调用 setVisible(false) ,它会导致这个

<div style="display:none">我的 HTML 面板!</div>

而 removeFromParent 将从页面的 DOM 中删除元素。同样,如果您有一个HTMLPanel附加到您的页面主体并在其上调用 removeFromParent() ,您将从

< body>
    <div >My HTML Panel !</div>
</body>

< body> < /body>

因此,一旦您从其父级中删除了一个小部件,如果您想再次显示它,则必须重新附加它。

至于你的第二个问题,我没有查看代码,DialogBox#hide但我会说它可能会setVisible(false)在某些时候调用,等等。

于 2012-06-14T08:42:27.250 回答
0

我发现 setVisible() 方法在隐藏嵌套演示者方面很有用。如果您想从您的一个页面中删除嵌套的演示者,在您的 onReset() 方法中,您可以执行以下操作:

    if(mainPagePresenter.isVisible()){getView().getMenuBar().setVisible(false);}
    else{getView().getMenuBar().setVisible(true);}        

这样,您只需在所需页面上隐藏嵌套的演示者或任何其他演示者或小部件。您可以使用 removeFromParent() 方法执行此操作,但在用户导航事件中,您的对象不会被重新插入,因为您从页面的 DOM 中删除了对象。如果用户重新加载页面,它最终将通过调用 onReveal() 方法插入。因此,如果您只想“隐藏”某些面板 setVisible() 是可行的,否则如果您想永久删除对象 removeFromParent() 是您的选择。

于 2013-12-04T19:31:23.013 回答