我在浏览器中使用navigator.getBattery()实用程序来检查笔记本电脑的电池状态,并返回一个承诺。以下是我的代码的小示例。

码:

Template.Sidebar.onCreated(function(){

    this.isBatteryCharing = new ReactiveVar(0);

    navigator.getBattery().then(function(battery) {

        battery.addEventListener('chargingchange', function(){
          if(battery.charging){
                // access the template variable here.
                // this.isBatteryCharing.set(battery.charging)
            }
        });

      });
});


我收到的控制台错误如下:

Uncaught (in promise) TypeError: Cannot read property 'set' of undefined


如何在promise this.isBatteryCharing中访问模板变量navigator.getBattery()

最佳答案

您可以使用arrow functions保留范围:

navigator.getBattery().then((battery) => {

    battery.addEventListener('chargingchange', () => {
      if(battery.charging){
            // access the template variable here.
            // this.isBatteryCharing.set(battery.charging)
        }
    });

  });


这样,this仍然引用原始对象。

07-24 21:54