2016-04-16 4 views
0

ionic2を使用してモーションを検出しようとしています。 ここに私のdetectMotion.tsのスニペットがあります。ionic2 - デバイスの動きが観測可能な状態に戻っていますが、サブスクライブするとエラーが発生します

import {DeviceMotion} from 'ionic-native'; 
@Page({ 
    templateUrl: 'build/pages/pedometer/pedometer.html' 
}) 
export class Pedometer { 
    platform; 
    watch; 
    constructor() { 
     this.platform = platform; 
    } 
    startWatching() { 
     console.log('Starting to watch'); 
     this.watch = DeviceMotion.watchAcceleration(this.options); 
     this.watch.subscribe(result => {this.detectMotion(result)}); 
    } 
    stopWatching() { 
     console.log('Stop Watching'); 
     // this.watch.dispose(); 
     this.watch.unsubscribe(); 
     // this.watch.clearWatch(); 
    } 
    detectMotion(result) { 
     console.log('Current Readings: '+ JSON.stringify(result)); 
     //.....do something with the results..... 
     this.stopWatching(); // Stop and wait for a second before restarting 
     setTimeout(this.startWatching(), 1000); 
    } 
} 

htmlのボタンクリックでStartWatchingが呼び出されています。 私はそれを研究できる3つのオプションをすべて試しました。退会する。処分する; clearWatch しかし、すべてが無駄です。私が取得されている正確なエラーは、私はそれが観測

任意のヘルプを返すか、ポインタが

〜Dhaval

事前に おかげで感謝していることを学ぶioni2の referenceから

error ORIGINAL EXCEPTION: TypeError: Object #<Observable> has no method 'unsubscribe' 

です

答えて

0

私が知る限り、subscribeコールから返されたsubscriptionを保存し、それにunsubscribe()を呼び出す必要があります。

あなたはこのような何かを得るでしょう:

export class Pedometer { 
    platform; 
    watch; 
    watchSub : Subscription; 
    constructor() { 
     this.platform = platform; 
    } 
    startWatching() { 
     console.log('Starting to watch'); 
     this.watch = DeviceMotion.watchAcceleration(this.options); 
     this.watchSub = this.watch.subscribe(result => {this.detectMotion(result)}); 
    } 
    stopWatching() { 
     console.log('Stop Watching'); 
     // this.watch.dispose(); 
     this.watchSub.unsubscribe(); 
     // this.watch.clearWatch(); 
    } 
    detectMotion(result) { 
     console.log('Current Readings: '+ JSON.stringify(result)); 
     //.....do something with the results..... 
     this.stopWatching(); // Stop and wait for a second before restarting 
     setTimeout(this.startWatching(), 1000); 
    } 
} 
+0

おかげ@PierreDucを - 私はhttp://www.gajotres.net/detecting-device-motion-with-ionic-framework- [この](以下ましたand-ngcordova /)があります。時計は購読したり購読を取り止める手掛かりであるという理解を持っていました。もう一度感謝してくれました –

関連する問題