繁体   English   中英

将应用程序状态保存在cordovas上的角度暂停

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM