在带有 Angular2 的 NativeScript 中获取元素值
In NativeScript with Angular2 get element value
我有一个列表,我想获取列表项的值。
观点如下
<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>
在打字稿中我有以下内容
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){
}
}
我可以执行以下操作来获取值
onItemTap(event){
let itemValue = this.myItems[event.index];
console.log(itemValue);
}
这将获取数组中的值。但这只会 return 数组中的值。
如您在视图中所见,我将字符串 Value is
附加到值。
那么如何访问被点击的标签的 text
属性。
您可以通过args.view访问项目模板的视图。从那时起,我假设您的 list-items 中会有不同的文本,因此通过绑定(使用 Angular 索引)为每个标签创建唯一 ID 很重要。所以你可以这样做:
<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 [id]="'lbl' + i" [text]='"Value is: " + i'></Label>
</StackLayout>
</template>
</ListView>
然后在您的 onItemTap
public onItemTap(args: ItemEventData) {
console.log("Item Tapped at cell index: " + args.index);
console.log(args.object); // prints something like ListView(137)
console.log(args.view); // prints something like StackLayout(265)
var lbl = <Label>args.view.getViewById("lbl" + args.index);
console.log(lbl.text); // prints the actual text of the tapped label
}
我有一个列表,我想获取列表项的值。
观点如下
<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>
在打字稿中我有以下内容
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){
}
}
我可以执行以下操作来获取值
onItemTap(event){
let itemValue = this.myItems[event.index];
console.log(itemValue);
}
这将获取数组中的值。但这只会 return 数组中的值。
如您在视图中所见,我将字符串 Value is
附加到值。
那么如何访问被点击的标签的 text
属性。
您可以通过args.view访问项目模板的视图。从那时起,我假设您的 list-items 中会有不同的文本,因此通过绑定(使用 Angular 索引)为每个标签创建唯一 ID 很重要。所以你可以这样做:
<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 [id]="'lbl' + i" [text]='"Value is: " + i'></Label>
</StackLayout>
</template>
</ListView>
然后在您的 onItemTap
public onItemTap(args: ItemEventData) {
console.log("Item Tapped at cell index: " + args.index);
console.log(args.object); // prints something like ListView(137)
console.log(args.view); // prints something like StackLayout(265)
var lbl = <Label>args.view.getViewById("lbl" + args.index);
console.log(lbl.text); // prints the actual text of the tapped label
}