我创建了许多自己的小部件。我有一个dom节点,我希望根据用户选择一次显示其中一个小部件。因此,我创建了一个小部件,将它放在dom节点并调用startup:
this.widget1 = new MyWidget();
this.widget1.placeAt(this.theDomNode, "only");
this.widget1.startup();
一切正常。 widget1和theDomNode是完成所有这些操作的对象的属性,因此'this'引用。
稍后我希望根据用户操作在那里显示不同的小部件,所以我用widget2重复完全相同的过程:
this.widget2 = new MyOtherWidget();
this.widget2.placeAt(this.theDomNode, "only");
this.widget2.startup();
这也很好。
当我想要返回先前显示的小部件时,会出现问题。在这种情况下,我不创建该窗口小部件的新实例,因为它已经实例化并被引用(例如,通过this.widget1等)。所以,我这样做:
this.widget1.placeAt(this.theDomNode, "only");
this.widget1.startup();
但是,这只是清除了DomNode的内容,并没有显示widget1的内容。同样,当显示任何其他小部件时,如果它不直接跟随实例化。似乎当一个小部件被domNode替换为另一个小部件时,它就会失去它的dom并且无法重复使用。
有谁知道如何解决这个问题的最佳方法?我想到的一个选项是为每个小部件设置一个domNode,然后将domNode本身的display属性更改为none以隐藏小部件,然后返回以显示它。然而,在加入这个额外级别之前,我认为我会抛出问题,以防有更简单的方法。
由于 西蒙