我在浏览器中使用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
仍然引用原始对象。