如何将参数传递给 Appcelerator TabGroup 中的 sub-page?

How can I pass an argument to a sub-page in an Appcelerator TabGroup?

我正在使用 Appcelerator 制作一个基于选项卡的应用程序。在母版页 (info.js) 上有一个显示标题和 ID 列表的列表视图。如果单击该项目,则应将 ID 传递到详细信息页面 (info_details.js)。 如何将 id 从 master 传递到标签组中的详细信息页面?

我正在使用示例应用程序中的代码,但它没有将任何参数传递给子(详细信息)页面: 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>

子页面(info_details)需要

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

您可以通过 createController args 参数传递参数。在您的情况下,您可以执行以下操作:

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;