目录

概述

preferences插件的作用是数据存储,支持存储数据、获取数据、建立数据变化监听、删除指定数据、删除所有数据的功能,支持简单和复杂数据结构。支持Android和IOS。

JS调用方法

1、导入插件require(“cordova!cordova-plugin-app-preferences”)。
2、插件提供五个方法

  • 存储数据:store(storeSuccess,storeFail,”key”,”value”)。store为方法名,storeSuccess和storeFail分别是成功回调、失败回调。数据存储是键值对的形式,key为键,value为值。
  • 获取数据:fetch(fetchSuccess,fetchFail,”key”)。fetch为方法名,fetchSuccess和fetchFail分别是成功回调、失败回调,key为要查找的数据的键。
  • 建立数据变化监听:创建监听,能监测到数据存储的变化(新建、变更、删除),并能得到变更的数据的键值。详细请看下面贴出的js代码的dataMonitor方法及其调用。
  • 删除指定数据:remove(removeSuccess,removeFail,”key”)。remove为方法名,removeSuccess和removeFail是成功回调、失败回调。key为要删除的数据的键。
  • 删除所有数据:clearAll(function(){alert(“数据成功清空!”)},function(){alert(“数据清空失败!”)})。clearAll为方法名,括号是成功回调和失败回调。
define(function(require){
	var $ = require("jquery");
	require("cordova!cordova-plugin-app-preferences");
	var preferences=plugins.appPreferences;
	function keyValue(){}
	var Model = function(){
		this.callParent();
		//设备准备好后加载数据变化监听
//		document.addEventListener("deviceready", dataMonitor, false);
	};
	function storeSuccess(result) {
		alert("存储成功,key值为"+keyValue.key+",value值为"+keyValue.value);
	};
	function storeFail(result) {
		alert("存储失败,key值为"+keyValue.key+",value值为"+keyValue.value);
	};
	function fetchSuccess(result) {
		alert("获取数据成功,key值为"+keyValue.key+",value值为"+result);
	};
	function fetchFail(result) {
		alert("获取数据失败,key值为"+keyValue.key+",value值为"+result);
	};
	function removeSuccess(result) {
		alert("删除成功,key值为"+keyValue.key);
	};
	function removeFail(result) {
		alert("删除失败,key值为"+keyValue.key);
	};
     function dataMonitor() {
    	 plugins.appPreferences.watch();
    	 document.addEventListener ('preferencesChanged', function (evt) {
	      // with some platforms can give you details what is changed
	      if (evt.key) {
	          alert("数据变化,数据变化的key值为"+evt.key);     
	      }
	 });
     }
	Model.prototype.storeClick = function(event){
		keyValue.key="key";
		keyValue.value="value";
		preferences.store(storeSuccess,storeFail,"key","value");
	};
	Model.prototype.fetchClick = function(event){
		keyValue.key="key";
		preferences.fetch(fetchSuccess,fetchFail,"key");	
	};
	Model.prototype.watchClick = function(event){
		alert("建立数据变化的监听!");
		dataMonitor();
	};
	Model.prototype.removeClick = function(event){
		keyValue.key="key";
		preferences.remove(removeSuccess,removeFail,"key");
	};
	Model.prototype.clearAllClick = function(event){
		preferences.clearAll(function(){alert("数据成功清空!")},function(){alert("数据清空失败!")});
	};
	return Model;
});

注意事项

1、keyValue.key和keyValue.value是静态声明的意思,js执行并回调是异步执行的。回调返回并没有提供key值,所以静态声明相当于自行记录了key值。
2、clearAll不会激发数据变化的监听。需要该监听生效的话不要用clearAll方法,可以用remove方法。