0

Ich habe eine props.xml Legierungsansicht und eine prequal.xml Legierungsansicht (die eine Ansicht enthält, die ein Formular enthält), jede hat auch ihre eigenen entsprechenden Controller. Das Prequal-Formular wird angezeigt, nachdem Tabellendaten in props.xml geladen wurden.So schließen Sie die Elternansicht einer Kindansicht, die sich in einem anderen Controller befindet

Ich brauchte das Prequal-Formular, um ein modales Fenster zu sein und da Android und iOS diese unterschiedlich behandeln, musste ich die voreingestellte Ansicht innerhalb eines AlertDialogs für Android und ein aktuelles modales Fenster für iOS setzen. So wird das Prequal-Formular zum Android AlertDialog, unter $.UI.create('AlertDialog', {properties});, über seine androidView-Eigenschaft hinzugefügt und dem iOS-Fenster einfach durch die add(view)-Funktion des Fensters hinzugefügt.

Das Problem liegt jedoch darin, dass der AlertDialog und das Fenster in props.js definiert sind, und ich muss in der Lage sein, diese Fenster von prequal.js zu schließen, nachdem das Formular übermittelt wird. Ich habe versucht, die ID zu verwenden, die diesen modalen Containeransichten zugeordnet ist, um sie zu schließen, aber es schließt nur die tatsächliche Ansicht, die das Formular selbst enthält, nicht die übergeordnete Ansicht, die es enthält.

Wie kann ich die übergeordnete Ansicht ihrer untergeordneten Elemente schließen, wenn die übergeordnete Ansicht in einem separaten Controller definiert ist, der von der untergeordneten Ansicht definiert ist?

+1

Ich bin mir nicht sicher, ob ich völlig verstanden die Frage, aber Sie können Funktionen als Parameter von einer Ansicht zur anderen übergeben und rufen Sie eine Funktion von einem anderen "Controller". – miga

+0

Entschuldigung, ich habe viele Hintergrundinformationen gegeben, nur für den Fall, dass es relevant sein könnte. Sicher ist das meiste vernachlässigbar. Grundsätzlich sind die Ansichten des übergeordneten Containers in der Datei props.js und die untergeordneten Ansichten in prequal.js. Ich muss in der Lage sein, die close oder hide Funktionen der übergeordneten Ansicht von prequal.js – Rampancy

Antwort

1

Innen winA Sie einen neuen Controller Pass über eine Callback-Funktion öffnen:

function closeA(){ 
    $.winA.close(); 
} 

Alloy.createController("winB", { 
    closeA: closeA 
} 

In winB können Sie $.args.closeA() jetzt rufen Sie die closeA() Funktion in der Steuerung auslösen winA

+0

zu nennen Vielen Dank für die Antwort! Gut funktioniert in meiner App. – Rampancy

Verwandte Themen