使用 angular 在 cordova pause 上保存应用程序状态
Saving the application state on cordovas pause with angular
我的 Android 设备上有一个 Cordova 应用程序 运行,用于显示从 Web 服务检索到的一些新闻。当我使用 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 时未定义。也许该应用程序已经终止并处于 "garbage collected"?任何人都可以证实我的怀疑或者我做错了什么吗?你是如何在你的应用程序中解决这个问题的?如果有任何帮助,我将不胜感激!
当您在
中定义事件绑定时
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;
})();
您可能希望得到一个 function-reference,但提升在这里不起作用,因为每个方法都是对匿名函数的引用,而这些函数的 prototype-fields 还没有声明。
将其封装在 lambda 函数中即可:
document.addEventListener('pause', ()=>this.saveNews(), false);
我的 Android 设备上有一个 Cordova 应用程序 运行,用于显示从 Web 服务检索到的一些新闻。当我使用 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 时未定义。也许该应用程序已经终止并处于 "garbage collected"?任何人都可以证实我的怀疑或者我做错了什么吗?你是如何在你的应用程序中解决这个问题的?如果有任何帮助,我将不胜感激!
当您在
中定义事件绑定时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;
})();
您可能希望得到一个 function-reference,但提升在这里不起作用,因为每个方法都是对匿名函数的引用,而这些函数的 prototype-fields 还没有声明。
将其封装在 lambda 函数中即可:
document.addEventListener('pause', ()=>this.saveNews(), false);