![](/img/trans.png)
[英]Where in angular/ngrx application to put logic for saving state to local storage
[英]Saving the application state on cordovas pause with angular
我在Android设备上运行了Cordova应用程序,以显示一些从Web服务检索到的新闻。 当我使用Typescript和Angular时,有一个服务可以像这样保持我的消息:
class NewsService {
news: News[];
}
我想将这些新闻保存在Cordova的pause事件中,因此我构建了一个服务来执行此操作,将其注入到NewsService中,并添加了具有相应回调的事件处理程序:
static $inject = ["$http", "newsApp.LocalStorageService"];
constructor(private $http: ng.IHttpService, private storageService: IStorageService) {
document.addEventListener('pause', saveNews, false);
}
saveNews(){
this.storageService.save(this.news);
}
我的问题是,在this.storageServcie
未定义saveNews
。 也许该应用程序已经被终止并被“垃圾收集”了? 谁能证实我的怀疑或我做错了什么? 您如何在应用程序中解决此问题? 我将不胜感激!
在定义事件绑定时
document.addEventListener('pause', this.saveNews, false);
您的方法根本还没有声明。 看一下这个TypeScript示例:
class Test {
greeting: string;
constructor(message: string) {
console.log(greet)
}
greet() {
return "Hello, " + this.greeting;
}
}
它转换为以下JavaScript:
var Test = (function () {
function Test(message) {
console.log(greet);
}
Test.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Test;
})();
您可能希望获得一个函数引用,但是提升在这里将行不通,因为每种方法都是匿名函数的引用,并且这些函数的原型字段尚未声明。
将其封装在lambda函数中将起作用:
document.addEventListener('pause', ()=>this.saveNews(), false);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.