2017-07-19 10 views
0

流星/コードを使ってiPhoneに現在のバッテリー残量を表示して反応したい。流星/コードを使ってバッテリー残量を表示して反応する

Thisは私が使用するプラグインです。

これは私が仕事にそれを想像する方法です:

export default class BatteryDetails extends Component { 

constructor(props){ 
    super(props); 

    this.currentBatteryLevel = 0; 

    function onBatteryStatus(status) { 
     this.currentBatteryLevel = status.level; 
    } 

    window.addEventListener("batterystatus", onBatteryStatus, false); 
    window.dispatchEvent(new Event('batterystatus')); 
} 

render() { 
    return (
     <div> 
      Remaining: {this.currentBatteryLevel} 
     </div> 
    ); 
} 
} 
+0

'render'メソッドで' this.getBatteryLevel() 'をレンダリングしようとしましたが、この関数は値を'返す 'のではないようです。 – cathalkilleen

答えて

0

私は今それをテストすることはできませんけれども、私は、より伝統的な何かのために行っているでしょう:

export default class BatteryDetails extends Component { 

    constructor(props) { 
    super(props); 

    this.state = { 
     currentBatteryLevel: 0 
    }; 

    window.addEventListener("batterystatus", (status) => this.onBatteryStatus(status), false); 
    window.dispatchEvent(new Event('batterystatus')); 
    } 

    onBatteryStatus(status) { 
    this.setState({ currentBatteryLevel: status.level }); 
    } 

    render() { 
    return ( 
     <div> 
     Remaining: { this.state.currentBatteryLevel } 
     </div> 
    ); 
    } 
} 
+0

答えをありがとうございますが、残念ながら、どちらも動作しません。 – Phil

+0

@Phil私の編集を見て、 'status'パラメータを忘れました。とにかく、何かエラーが出ますか? –

+0

@ Nathan P .:正しく覚えていれば、変数 'onBatteryStatus'を解決できないというエラーが出ました。私はその宣言をコンストラクタに移してもエラーは発生しませんが、それでも動作しません。 – Phil

0

を、私は私が使用したと思われますそのパッケージはPhoneGapプロジェクト(Meteorプロジェクトではない)にあり、batterystatusイベントでいくつか問題が発生しました。私はそれが次のようだったと思う:

初めてイベントを購読するとすぐに発砲されます。これは、次回の購読時にも同様ですが、最初のイベントリスナーの登録を解除した場合にのみ機能します。この間違いを犯した場合(そして登録解除を忘れる)、アプリを再起動する必要があります(強制的に閉じる)。

しかし、充電器の抜き差しを行うと、イベントは常に発生します。そのため、充電器をテストする便利な方法でした。

+0

情報ありがとうございました - しかし、私はこれが私を助けることができる方法を見ていない:)私の理解では、問題は、イベントが引き起こされた後に正しい値がなくなっているということです。 – Phil

+0

ああ、私はあなたが 'dispatchEvent'を使用していることを確認しました。私はソースコードをチェックしていませんが、 'cordova-plugin-battery-status'がそのイベントを聞いて本当の' batterystatus'イベントをディスパッチします(イベントをディスパッチすると、それはそのまま、例えばそのまま送出されます。 'level'プロパティはありません)。 –

+0

'onBatteryStatus'の中に' status.level'を記録すると正しい結果が表示されます。私はあなたが私に言っていることを理解しようとしているかどうか分からない:) – Phil

関連する問題