Ich habe eine Liste, und ich möchte den Wert des Listenelements erhalten.In NativeScript mit Angular2 erhalten Element Wert
Der Blick ist wie folgt
<ListView [items]="myItems" (itemTap)="onItemTap($event)">
<template let-item="item" let-i="index" let-odd="odd" let-even="even">
<StackLayout [class.odd]="odd" [class.even]="even">
<Label #myFoo id="grocery-list" [text]='"Value is: " + i'></Label>
</StackLayout>
</template>
In Typoskript ich habe folgendes
import { Component,ViewChild,ElementRef } from "@angular/core";
import {topmost} from "ui/frame";
import {ListView} from "ui/list-view";
export class AppComponent {
@ViewChild("myFoo") myFooRef: ElementRef;
public myItems = [];
constructor() {
this.myItems.push("1");
this.myItems.push("2");
this.myItems.push("3");
}
onItemTap(event){
}
}
Ich kann das den Wert
onItemTap(event){
let itemValue = this.myItems[event.index];
console.log(itemValue);
}
Dies tun folgende bekommen wird bekommen der Wert im Array. Aber dies wird nur den Wert im Array zurückgeben.
Wie Sie in der Ansicht sehen können, habe ich die Zeichenfolge Value is
an den Wert angehängt.
Wie kann ich also auf die Eigenschaft text
des Labels zugreifen, die angezapft wird.
Ich habe ein einziges Etikett. Ich bekomme den Textwert, auch wenn die ID nicht auf Index basiert. – krv
Hinzufügen zu diesem die ID basierte auf eckigen Bindung ..aber nicht index basiert. also habe ich '[id] =" 'lbl' "' anstelle von diesem '[id] =" 'lbl' + i "' und es funktioniert immer noch. Auch dieses 'id =" lbl "' funktioniert genauso gut – krv
Nun es würde wie erwartet funktionieren, solange Ihre Vorlagen den gleichen Text verwenden ... immer noch ist es gegen alle Regeln, mehrere Elemente mit der gleichen ID zu haben (was ist was passiert, wenn Sie keine eindeutigen IDs mit dem Index erstellen). Zum Beispiel, wenn Ihre Liste itemTemplates verwendet und 10 Elemente hat, haben alle die gleiche ID - wie bekommen Sie die dritte? –