我最近在我的 ionic 项目( winwheel.js )中实现了一个 javascript Liberia
我的 Home.ts 中有以下功能
正是在这行代码中,'callbackFinished' : this.alertPrize
我调用了函数alertPrize()
编辑显示所有代码
import { Component, ViewChild } from '@angular/core';
import { NavController } from 'ionic-angular';
//librerias
import { Storage } from '@ionic/storage';
import { ModalController } from 'ionic-angular';
//providers
import { PrimeraAperturaProvider } from '../../providers/primera-apertura/primera-apertura';
//pagnias
import { RuletaPage } from '../ruleta/ruleta';
import { GanadorPage } from '../ganador/ganador';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
public theWheel ;
public DietaSeleccionada:any;
public ListaComidas:any;
public Imagen:any;
public keys:any;
constructor(public navCtrl: NavController,private storage: Storage,public _primera : PrimeraAperturaProvider,public modalCtrl: ModalController) {
}
ionViewDidLoad(){
this.checkdata()
}
CrearRuleta(lista){
let arr =[];
arr = lista;
let cantidad = arr.length
this.theWheel = new Winwheel
({
'numSegments' : cantidad, // Cantidad de segmentos
'outerRadius' : 130, // Tamaño de la ruleta
'innerRadius' : 10, // Circulo del centro
'textFontSize' : 14, // Tamaño de la letra
'segments' : lista,
'animation' : // Animacion
{
'type' : 'spinToStop',
'duration' : 5,
'spins' : 8,
'callbackFinished' : this.alertPrize
},
'pins' : // Specify pin parameters.
{
'number' : 18,
'outerRadius' : 5,
'margin' : 10,
'fillStyle' : '#FFF',
'strokeStyle' : '#bfa100'
}
});
}
alertPrize(indicatedSegment)
{
this.MostrarGanador(indicatedSegment)
}
MostrarGanador(dato){
let modal = this.modalCtrl.create(GanadorPage)
modal.onDidDismiss(data => {
console.log(dato)
});
modal.present();
}
}
core.js:1449 错误类型错误:无法在 webpackJsonp.292.HomePage.alertPrize (home.ts:74) 在 f.winwheelStopAnimation (winwheel.min.js:53) 在 fi_callback (TweenMax.min) 处读取未定义的属性“ShowWinner” .js:16) 在 fkrender (TweenMax.min.js:14) 在 Object.i.render (TweenMax.min.js:17) 在 Object.E._updateRoot.H.render (TweenMax.min.js:17)在 Object.i.dispatchEvent (TweenMax.min.js:16) 在 s (TweenMax.min.js:16) 在 t.invokeTask (polyfills.js:3) 在 Object.onInvokeTask (core.js:4751)
我认为该函数MostrarGanador()
将其视为来自另一个类我对此主题并不感到困惑
问题是经典的 Javascript 上下文丢失:
解决方案很简单:代码行
应修改为
bind
其中类方法Function
将上下文 (this
) 设置为您传递给它的参数。