我正在使用AngularJS v1.2.7和Cordova 3.3.0(Android)我需要在手机内存中存储一些设置 - 所以当app /设备重启时,应用程序仍然可以访问这些存储的数据。 / p>
有关此的任何教程?我找不到任何:(
知道Cordova支持; LocalStorage,WebSQL(no more maintained),IndexedDB(Opera和Safari的not widely supported)。我倾向于使用LocalStorage,但是即使在我重启设备之后它仍保留/记住数据吗?
目前我正在使用答案#12969480 by Richard Szalay。
答案 0 :(得分:3)
我正在四处寻找类似的东西。我找到了以下内容:
http://ngmodules.org/modules/angularLocalStorage
示例有一个显示已保存状态的文本框: http://plnkr.co/edit/Y1mrNVRkInCItqvZXtto?p=preview
var eS = angular.module('exampleStore', ['localStorage']);
eS.controller('MainCtrl',['$scope','$store',function($scope, $store) {
$store.bind($scope, 'propertyOnScope', 'My default value');
$scope.clearTest = function(){
$store.remove('propertyOnScope');
};
}]);
答案 1 :(得分:1)
我建议编写自定义插件并在Objective-C用户默认值中正确存储设置。
LocalStorage不是永久存储,而WebSQL对于存储设置似乎有些过分。
您不必过多参与Objective-C并且有很好的Phonegap / Cordova插件指南:
http://docs.phonegap.com/en/3.3.0/guide_hybrid_plugins_index.md.html#Plugin%20Development%20Guide
我使用此代码存储“FirstRun”变量以检查应用是否是新安装。插件检查应用程序之前是否已运行,并返回1或0,将其解析为整数并计算为true / false。
您可以更新此代码并向“AppChecks”类添加更多方法。我把所有简单的检查和设置存储放在这个类中。
AppChecks.h
#import <Cordova/CDVPlugin.h>
@interface AppChecks : CDVPlugin
- (void) checkFirstRun:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
@end
AppChecks.m
#import "AppChecks.h"
#import <Cordova/CDVPluginResult.h>
@implementation AppChecks
- (void) checkFirstRun:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options {
NSString* callbackId = [arguments objectAtIndex:0];
CDVPluginResult* pluginResult = nil;
NSString* javaScript = nil;
@try {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *isFirstRun = @"1";
if (![defaults objectForKey:@"firstRun"]) {
[defaults setObject:[NSDate date] forKey:@"firstRun"];
} else {
isFirstRun = @"0";
}
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:isFirstRun];
javaScript = [pluginResult toSuccessCallbackString:callbackId];
} @catch (NSException* exception) {
// could not get locale
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
javaScript = [pluginResult toErrorCallbackString:callbackId];
}
[self writeJavascript:javaScript];
}
@end
在我的Javascript代码中使用:
cordova.exec(
function( isFirstRun ) {
isFirstRun = parseInt( isFirstRun );
if( isFirstRun ) {
// do stuff for first run
}
},
function(err) {
// handle error from plugin
},
"AppChecks",
"checkFirstRun",
[]
);
答案 2 :(得分:0)
使用Cordova将LocalStorage转换为本机文件系统,因此实际上数据将在安装期间保持不变。
查看ngCordova创建Drifty的Ionic人员中的the Ionic Show。
如果您想通过Cordova访问本机设备功能,并使用AngularJS作为您的前端,那么这些AngularJS Cordova包装器会让生活变得更轻松。
另外,请查看他们的新网络系列here。他们讨论了混合移动应用开发者的当前相关工具。
可以找到使用带有phonegap的localStorage的基本教程{{3}}