我正在使用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页,但是没有显示在上下文中发送的名称,如果我尝试使用信息,它可以工作。
我无法弄清楚如何使它发挥作用
提前致谢
答案 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页