2017-06-12 81 views
0

我正在使用Appcelerator製作基於選項卡的應用程序。在母版頁(info.js)上有一個列表視圖,顯示標題和ID列表。如果點擊該項目,則應該將該ID傳遞給詳細信息頁面(info_details.js)。 如何將標識從主標識傳遞到標籤組中的詳細信息頁面?如何將參數傳遞給Appcelerator TabGroup中的子頁面?

我使用的代碼示例應用程序,但它並沒有任何參數傳遞給子(詳細信息)頁: 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> 

的subpage(info_details)期望

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

回答

1

您可以通過參數createController傳遞參數。你的情況,你可以這樣做:

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()); 

}

然後在info_details

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