2017-01-16 2 views
0

Ich habe nach Lösungen ohne Glück gesucht, ich versuche, den Index der Observablearray verwenden, aber die Konsole wirft immer und Fehler und die gerenderte Ansicht zeigt nichts als leer auf Auf dem Etikett steht die {{ $index }} geschrieben.

enter image description here

Antwort

1

Sie können den Index nicht über $ Index zugreifen, da es keine solche Logik für Repeater implementiert ist. Sie können für jedes Ihrer Array-Elemente eine eigene ID erstellen und diese dann als Index verwenden. z.B.

page.ts

items.forEach(element => { 
    element.id = id; 
    id++; 
}); 

page.xml

<Repeater items="{{ items }}"> 
    <Repeater.itemsLayout> 
     <StackLayout /> 
    </Repeater.itemsLayout> 
    <Repeater.itemTemplate> 
     <Label text="{{ id }}" textWrap="true" /> 
    </Repeater.itemTemplate> 
</Repeater> 

Und dann können Sie das spezifische Element mit dem Binding der angezapften Ansicht geklopft zu bekommen.

exports.onTap = function(args) { 
    var item = args.view.bindingContext; 
    console.log('item.id', item.get('id')); 
}; 
+0

also muss ich es wirklich manuell tun? das ist irgendwie traurig, zusätzliche Logik zu haben ... :) –

+0

Oder verwenden Sie eine Listview :) https://docs.nativescript.org/api-reference/interfaces/_ui_list_view_.itemeventdata.html –

+0

Wenn Sie dies implementieren möchten, können Sie diesen Code hinzufügen 'dataItem [" $ index "] = i; 'Nach dieser Zeile https://github.com/NativeScript/NativeScript/blob/master/tns-core-modules/ui/repeater/repeater.ts#L150 und dann haben Sie $ Index für Ihren Repeater - Sie müssen entweder verknüpfen Sie Ihre Tns-Core-Module oder ändern Sie direkt in Ihrem Knoten Module nach jeder Npm-Installation –

Verwandte Themen