2016-05-25 23 views
1

タップされた項目のコンテキストをリストビューで取得することは可能ですか?たとえば、3つのアイテムのリストがある場合、それがクリックされた2番目のアイテムであることをどのようにして知ることができ、観測可能な配列のそのアイテムに関連するオブジェクトからデータを取得できますか?Nativescriptでタップされたリスト項目のコンテキストを取得する

EX:ユーザーが接続リストで2番目の接続をタップした場合のリストテンプレートは、クリックしたアイテムのインデックスに基づいてその接続に関連付けられたデータを取得するにはどうすればよいですか?

<ListView items="{{ connections }}" loaded="" itemLoading="" itemTap=""> 
     <ListView.itemTemplate> 
      <StackLayout class='connection-li'> 
       <GridLayout class="connection-info" rows="" columns="auto, *, *" tap="goToMeasurements"> 
        <Image col="0" src="res://ic_person_black_36dp" stretch ="none" />       
        <Label col="1" class="connection-name" text="{{ PatientFirstName + ' ' + PatientLastName }}" textWrap="false" /> 
        <Image col="2" verticalAlignment="middle" horizontalAlignment="right" src="res://ic_cancel_black_18dp" stretch ="none" />       
       </GridLayout>              
      </StackLayout> 
     </ListView.itemTemplate> 
    </ListView> 

EDIT: は私がインデックスデータを取得するためにフックすることができ、次のイベントを発見したドキュメントをオフに基づいて、それは私が興味を持って1を具体的に参照することを確認することができますどのようにリストビューを参照します私はそれにクラスを与え、それにアクセスすることはできますか?

listView.on(listViewModule.ListView.itemTapEvent, function (args: listViewModule.ItemEventData) { 
    var tappedItemIndex = args.index; 
    var tappedItemView = args.view; 
    //// Do someting 
}); 

答えて

4

あなたは、このページ(すなわちメインpage.xmlとメインpage.js)に対応したJavaScriptファイルを持って、別のクラスを必要としません。その後、あなたはそのitemTap属性にイベントを配線することができます

<ListView items="{{ connections }}" itemTap="onConnectionTapped"> 

次に、あなたの対応のJavaScriptファイルからそのイベントをエクスポートし、そしてあなたがアイテムカップルのさまざまな方法のためのデータオブジェクトにアクセスすることができます。

export function onConnectionTapped(args) { 
    var tappedView = args.view, 
     //the View will have a bindingContext 
     // set to the individual item from the list 
     tappedItem = tappedView.bindingContext; 

    //or, if you need the entire list as well, 
    // get it from the Page's bindingContext 
    // as each View has a ref to the Page it's on 
    var pageBindingContext = tappedView.page.bindingContext, 
     fullItemsList = pageBindingContext.connections, 
     itemForTap = fullItemsList[args.index]; 
} 
+0

ねえ、私は角度2で同様の問題があります。http://stackoverflow.com/questions/41809113/in-nativescript-with-angular2-get-element-value – krv

2

goToMeasurementsハンドラargs.objectGridLayoutになります。その.bindingContextプロパティは、connections配列のデータ項目になります。インデックスが必要な場合はconnections.indexOf(dataItem)がこのデータ項目のインデックスを返します。

関連する問題