使用角度保存科尔多瓦暂停应用程序状态
Posted
技术标签:
【中文标题】使用角度保存科尔多瓦暂停应用程序状态【英文标题】:Saving the application state on cordovas pause with angular 【发布时间】:2016-04-27 13:14:24 【问题描述】:我在我的 android 设备上运行了一个 Cordova 应用程序,用于显示从网络服务检索到的一些新闻。当我使用 Typescript 和 Angular 时,我有一个服务来保存我的新闻,如下所示:
class NewsService
news: News[];
我想将这些新闻保存在 Cordova 的暂停事件中,因此我构建了一个服务来执行此操作,将其注入我的 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
-Method 时未定义。也许该应用程序已经终止并被“垃圾收集”?有人可以证实我的怀疑还是我做错了什么?你是如何在你的应用程序中解决这个问题的?如有任何帮助,我将不胜感激!
【问题讨论】:
【参考方案1】:当你在
中定义你的事件绑定时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);
【讨论】:
以上是关于使用角度保存科尔多瓦暂停应用程序状态的主要内容,如果未能解决你的问题,请参考以下文章