ionic 2 - 项目滑块 - 滑动触发功能
ionic 2 - item slider - slide to trigger function
我有带 3 个按钮的离子项目滑动指令。 2(A和B)向左滑动出现,1(按钮C)向右滑动
我想实现当我真正将项目拖到最右边时触发按钮C下的功能的行为。
ionic2 主页上的文档以这段代码为例
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>
我的行为是,当我滑动太远时,它会调用并推送页面多次(我猜我抛出的事件数)
关于如何正确实施这个的任何建议?
谢谢!
您可以添加一个标志以确保 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
,这样您只在向右滑动时才推动页面。
我有带 3 个按钮的离子项目滑动指令。 2(A和B)向左滑动出现,1(按钮C)向右滑动
我想实现当我真正将项目拖到最右边时触发按钮C下的功能的行为。
ionic2 主页上的文档以这段代码为例
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>
我的行为是,当我滑动太远时,它会调用并推送页面多次(我猜我抛出的事件数)
关于如何正确实施这个的任何建议?
谢谢!
您可以添加一个标志以确保 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
,这样您只在向右滑动时才推动页面。