0

ich folgenden Code haben (index.js):Titanlegierung: erhalten aktuelle Fenster aus erforderlich Ansicht

<Alloy> 
 
    <Window id="home" > 
 
    <View id="formulaire"> 
 
\t <Require type="view" id="etape_1_form" src="form/etape_1" /> 
 
\t </View> 
 
    </Window> 
 
</Alloy>

Auf etape_1_form.xml ich habe ein Picker Widget zu verwenden, aus: danielhanold.pickerwidget

hier ist eine einfache Methode, um dieses Widget innerhalb etape_1_form.js (der Controller) zu verwenden:

Alloy.createWidget('danielhanold.pickerWidget', { 
 
    id: 'mySingleColumn', 
 
    outerView: $.home, 
 
    hideNavBar: false, 
 
    type: 'single-column', 
 
    selectedValues: [20], 
 
    pickerValues: [{10: 'Auburn', 20: 'Bald', 30: 'Black', 40: 'Blond', 50: 'Brown'}], 
 
    onDone: function(e) { 
 
    // Do something 
 
    }, 
 
}); 
 

 
$.form_win.open();

Anstatt nun einen Picker zu öffnen, das einen Fehler aus, weil ich nicht das aktuelle Fenster aus dieser Zeile zugreifen:

outerView: $.home 
The error : "undefined is not an object (evaluating 'outerView.add') 

Wenn ich den Picker auf die index.js bewegen (Haupt controller) der picker funktioniert, aber ich habe viele benötigte formulare und möchte meinen code organisieren, also setze ich jedes form js code in seine controller-datei.

Also, wie ich auf $ .home Fenster von der erforderlichen Ansicht zugreifen kann? Danke für Ihre Hilfe.

Antwort

1

Nein, Sie können nicht direkt.

Aber Sie können dies leicht mit "Globals" vermeiden.

Auf index.js:

Alloy.Globals.indexController = $; 

Auf etape_1_form.js

outerView: Alloy.Globals.indexController.home