2017-06-12 70 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;