我有带3个按钮的ionic-item-sliding指令。 2(A和B)向左滑动时出现,右侧滑动1(按钮C)。
我想实现当我真正将项目拖到最右边时触发按钮C下的功能的行为。
ionic2 hompage上的文档以此代码片段为例
ondrag(event, item) {
let percent = event.getSlidingPercent();
if (percent > 0) {
// positive
console.log('right side');
} else {
// negative
console.log('left side');
}
if (Math.abs(percent) > 1) {
this.navCtrl.push(NextPage,{param:item},{ animate: true, direction: 'forward' })
}
}
在
上使用它<ion-item-sliding *ngFor="let item of items "(ionDrag)="ondrag($event, item)"></ion-item-sliding>
我得到的行为是,当我滑动太远时,它会多次调用并推送页面(我猜多少事件就像我投掷的那样)
有关如何正确实施此建议的任何建议吗?
谢谢!
答案 0 :(得分:5)
您可以添加一个标志,以确保push()
方法只执行一次。
import { Component } from "@angular/core";
import { NavController } from 'ionic-angular/index';
import { Page1 } from 'page1.ts';
@Component({
templateUrl:"home.html"
})
export class HomePage {
private alreadyPushed: boolean;
private items: Array<any>;
private selectedItem: any;
constructor(private navCtrl: NavController) {
this.items = [
'City of Amsterdam',
'City of Bogota',
'City of Buenos Aires',
'City of Dhaka'
];
}
ionViewDidEnter() {
// Initialize the flag
this.alreadyPushed = false;
if(this.selectedItem) {
// Reset the selected item
this.selectedItem._setOpenAmount(0);
}
}
ondrag(event, item) {
let percent = event.getSlidingPercent();
if (percent > 1 && !this.alreadyPushed) {
// Store the event to reset it later
this.selectedItem = event;
// Set the flag to true
this.alreadyPushed = true;
// Push the new page
this.navCtrl.push(Page1, { param : item });
}
}
}
另请注意,您应使用percent > 1
代替Math.abs(percent) > 1
,这样您只需向右滑动即可推送页面。