在Promise中访问Template变量。 [流星+火焰]

时间:2018-04-23 12:36:48

标签: javascript meteor ecmascript-6 es6-promise meteor-blaze

我正在使用navigator.getBattery()实用程序来检查笔记本电脑的电池状态并返回一个承诺。下面是我的代码的一个小例子。

CODE:

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()

1 个答案:

答案 0 :(得分:1)

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

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

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

  });

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