2016-07-29 28 views
1

我使用nativescript來構建基本的應用程序,但我堅持在頁面之間發送上下文。
我正在列出頁面1中的一系列項目,我從一個http請求中獲得,我想要實現的是將項目的id發送到上下文中,以創建http請求並在頁面2中呈現響應。
這裏是我的方法:在nativescript上下文中發送動態值

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; 
}; 

事情是:當我點擊一個項目時,應用程序導航到page2,但不顯示在上下文中發送的名稱,如果我嘗試使用信息,它的工作原理。
我無法弄清楚如何使它工作。
在此先感謝

回答

0

我認爲這是因爲你沒有從args.object.name得到name。你有沒有試過console.log的id和名字?它顯示信息的原因是因爲您將上下文中的信息設置爲字符串,而名稱可能不是什麼。

我也覺得有什麼錯在這裏在你的代碼:

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

的ListView不具備這樣的性質「motelId」或「名」,而這些也應該ListView.itemTemplate裏面,因爲我理解。

還有一件事,你把「itemTap」放在ListView標籤中。這意味着你從args.object得到的對象將是ListView的實例,它沒有像name這樣的屬性,因此你沒有名字發送給page2

+0

當我console.log的名字和id我得到[對象對象],但如果我將該函數移動到標籤並將名稱和標識作爲標籤屬性,我會得到正確的值 –