在nativescript中的上下文中发送动态值

时间:2016-07-29 00:50:29

标签: http nativescript

我正在使用nativescript来构建一个基本的应用程序,但我不愿在页面之间发送上下文 我在page1中列出了一系列项目,我从http请求中获取,我想要实现的是将项目的id发送到上下文中以发出http请求并在第2页中呈现响应。
这是我的方法:

page1.xml(此页面注入tabviewitem)

<StackLayout class="tab-content" loaded="onViewLoaded">
    <GridLayout rows="auto, *">
        <ListView items="{{ motels }}"
                  row="1"
                  id="motelsList"
                  motelId="{{ id }}"
                  name="{{ name }}"
                  itemTap="goToMotelDetail">
            <ListView.itemTemplate>
                <GridLayout columns="auto, *">
                    <GridLayout columns="auto" rows="auto" class="icon-wrap">
                        <Image width="70" height="70" src="http://fpoimg.com/70x70" stretch="fill" css="icon-image" />
                    </GridLayout>
                    <StackLayout col="1" verticalAlignment="center">
                        <Label text="{{ name }}" textWrap="true" class="motel-name" />
                        <Label text="{{ address }}" textWrap="true" class="motel-address" />
                    </StackLayout>                   
                </GridLayout>
            </ListView.itemTemplate>
        </ListView>
        <ActivityIndicator busy="{{ isLoading }}" row="1" horizontalAlignment="center" />
    </GridLayout>
</StackLayout>

page1.js

exports.goToMotelDetail = function(args) {
    var id = args.object.motelId;
    var name = args.object.name;
    var navigationEntry = {
        moduleName: "views/motel-detail/motel-detail",
        context: {
            info: "some string to test",
            id: id,
            name: name
        },
        animated: false
    };
    var topmost = frameModule.topmost();
    topmost.navigate(navigationEntry);
}

page2.xml

<Page  navigatedTo="navigatedTo">
    <Page.ActionBar>
        <ActionBar title="{{ name }}" />
    </Page.ActionBar>
    <Label text="Motel detail" />
</Page>

page2.js

exports.navigatedTo = function (args) {
  var page = args.object;
  var dataItem = page.navigationContext;
  page.bindingContext = dataItem;
};

事情是:当我点击一个项目时,应用程序导航到第2页,但是没有显示在上下文中发送的名称,如果我尝试使用信息,它可以工作。
我无法弄清楚如何使它发挥作用 提前致谢

1 个答案:

答案 0 :(得分:0)

我认为这是因为你没有从name获得args.object.name。你有没有尝试过console.log的id和名字?它显示信息的原因是因为您将上下文中的信息设置为字符串,而名称可能没有。

我还认为您的代码中存在错误:

<ListView items="{{ motels }}"
              row="1"
              id="motelsList"
              motelId="{{ id }}"
              name="{{ name }}"
              itemTap="goToMotelDetail">

ListView没有这样的属性&#34; motelId&#34;或&#34; name&#34;,这些也应该在我理解的ListView.itemTemplate中。

还有一件事,你把&#34; itemTap&#34;在ListView标签内。这意味着您从args.object获得的对象将是ListView的实例,它没有像name这样的属性,因此您没有将名称发送到第2页