Ich habe eine Alloy-App mit einem in zwei Ansichten unterteilten Fenster: eine Sidebar-Menüansicht auf der linken Seite und eine Hauptansicht auf der rechten Seite. Jedes Mal, wenn der Benutzer auf ein anderes Menüelement in der Seitenleiste klickt, entferne ich alle an die Hauptansicht angehängten Kinder und lade die zu diesem Menüelement gehörende Ansicht/Steuerung und hefte sie an die Hauptansicht an. Meine Frage: Ist das ausreichend? Wenn die entfernte Ansicht Ereignis-Listener an Elemente in ihr angehängt hat, werden sie auch aufgeräumt oder nicht? Muss ich einen Verweis auf jeden Controller halten, den ich instanziiert habe, und controller.destroy() und controller.off() aufrufen, bevor ich den neuen View/Controller lade oder nicht?Titan: Korrigieren Sie einen Controller, der mit einer Nicht-Fensteransicht verknüpft ist
Ich frage, weil mit Ansichten ohne Fenster nicht möglich ist, eine Aufräumfunktion an das "onclose" -Ereignis anzuhängen, weil die UI.View-Elemente nicht "geschlossen" werden können (nur Windows).
Was ist der richtige Weg, um diese Situation in Titan zu behandeln?
Aber wenn ich nur Ereignis-Listener an die inneren Elemente der Ansicht angehängt habe, die ich entferne, überleben sie oder nicht? Danke für Ihre Hilfe – revy
Sie werden nicht überleben, wenn nicht an Sammlung oder Modell binden. Sie könnten es mit Ihren Codes wie folgt testen: fügen Sie Ti.App.info ("einige Wörter") in Ihrem Event-Listener hinzu, schließen Sie die Ansicht und öffnen Sie sie erneut, sehen Sie, wie viele "einige Wörter" angezeigt werden, wenn "einige Wörter" zweimal angezeigt werden Dies bedeutet, dass der Ereignis-Listener in der Ansicht, die Sie geschlossen haben, noch immer vorhanden ist. – jack
Ok, jetzt habe ich es, danke! – revy