2017-06-12 1 views
0

Ich mache eine tab-basierte App mit Appcelerator. Auf der Masterseite (info.js) gibt es eine Listenansicht mit einer Liste von Titeln und IDs. Wenn man auf das Element klickt, sollte die ID an die Detailseite (info_details.js) übergeben werden. Wie kann ich die ID vom Master an die Detailseite in einer Tabgruppe übergeben?Wie kann ich ein Argument an eine Unterseite in einer Appcelerator TabGroup übergeben?

Ich bin Code aus dem Beispiel-App verwenden, aber es geht nicht jedes Argument an die Unter (Details) Seite: https://github.com/appcelerator-developer-relations/appc-sample-ti520/blob/master/app/controllers/index.js

function onListViewItemclick(e) { 
var item = e.section.getItemAt(e.itemIndex); 
//var controllerName = e.itemId; 
openSample("info_details"); 
} 

function openSample(controllerName) { 
var controller = Alloy.createController(controllerName); 
$.info.open(controller.getView()); 
} 

Index.xml:

<TabGroup> 
    <Tab title="Tab 1" icon="KS_nav_ui.png" id="main"> 
     <Window title="Nominate"> 
      <Label>I am Window 1</Label> 
     </Window> 
    </Tab> 
    <Tab title="Tab 2" icon="KS_nav_views.png" id="info"> 
     <Window title="Info"> 
      <Require src="info"/> 
     </Window> 
    </Tab> 
</TabGroup> 

Die Unterseite (info_details) erwartet

var args = $.args; 
var currentNid = args.nid; 

Antwort

1

Sie können Argumente über den Parameter args createController übergeben. In Ihrem Fall, können Sie so etwas wie:

function onListViewItemclick(e) { 

    //e.itemId or whatever you want to send to the controller 
    openSample("info_details", {nid: e.itemId}); 
} 

function openSample(controllerName, args) { 
    //pass the args to createController 
    var controller = Alloy.createController(controllerName, args); 
    $.info.open(controller.getView()); 

}

Dann in der info_details:

var args = $.args; 
var currentNid = args.nid; 
Verwandte Themen