【发布时间】:2018-04-23 13:46:07
【问题描述】:
我正在尝试使用 angular2 + typescript 从点击事件中获取数据:
这是组件 HTML:
<RadListView row="1" [items]="groceryList" [class.visible]="listLoaded" (tap)="seeItem($event)"
swipeActions="true" (itemSwipeProgressStarted)="onSwipeCellStarted($event)">
<ng-template let-item="item">
<Label [text]="item.name" class="p-15 list-item"></Label>
</ng-template>
<GridLayout *tkListItemSwipeTemplate columns="*, auto">
<StackLayout id="delete-view" col="1" (tap)="delete($event)" class="delete-view">
<Image src="~/images/delete.png"></Image>
</StackLayout>
</GridLayout>
</RadListView>
这是组件代码:
seeItem(args: ListViewEventData) {
console.log('item ', <Grocery>args.object.bindingContext);
console.log('in case');
}
当我从我的 ListView 中点击一个元素时,我会得到 console.log:
[Eric Guzmán’s iPhone]: item undefined
[Eric Guzmán’s iPhone]: in case
“删除”事件(在此组件中)使用相同的逻辑,当点击时:
delete(args: ListViewEventData) {
let grocery = <Grocery>args.object.bindingContext;
this.groceryService.delete(grocery.id)
.subscribe(() => {
let index = this.groceryList.indexOf(grocery);
this.groceryList.splice(index, 1);
});
}
我是 NativeScript 的初学者,非常感谢您的帮助,
【问题讨论】:
-
这在您使用 RadListview 时不起作用,而在杂货店示例中它是 ListView。所以抓住索引
var index=args.itemIndex;,然后按该索引过滤数组,即this.groceryList[index]; -
非常感谢,它成功了。
标签: angular typescript nativescript