在 Metro Style 应用程序中保存本地数据
Posted
技术标签:
【中文标题】在 Metro Style 应用程序中保存本地数据【英文标题】:Saving Local Data in Metro Style App 【发布时间】:2012-04-30 17:52:00 【问题描述】:我想在 Windows 8 Metro 风格的应用程序中创建一个评分机制,并希望使用 Windows.Storage.ApplicationData 在本地保存该分数,因为我是 Visual Studio 和应用程序构建的新手,所以我很难过。
var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings;
// Create a simple setting
localSettings.values["totalPike"] = '0';
// Read data from a simple setting
var totalPike = localSettings.values["totalPike"];
if (!totalPike)
// No data
else
// Access data in value
// Delete a simple setting
localSettings.values("totalPike");
这就是 windows 处理来自 msdn 的应用数据的方式
$(document).ready(function ()
var clicks = 99;
$("#totalScoreTestButton").click(function ()
totalPike = totalPike + clicks
$("#totalScoreTest").text(totalPike);
);
);
这是我当时用来将分数添加到总分数中的功能,但是每当我关闭应用程序并重新启动它时,都不会保存分数。有人可以帮助我吗?如果可能的话,请解释一下 Metro 应用程序如何处理本地数据?
【问题讨论】:
【参考方案1】:例如:
(function ()
"use strict";
WinJS.Namespace.define("PersistenceManager",
stateFile: "game_state",
saveState: function ()
var state =
game_state: game_state,
level: levelIndex,
score: SCORE,
playerLives: player_lives,
compLives: comp_lives
;
WinJS.Application.local.writeText(PersistenceManager.stateFile, JSON.stringify(state));
,
loadStateAsync: function ()
var app = WinJS.Application;
return app.local.exists(PersistenceManager.stateFile).then(function (exists)
if (exists)
return app.local.readText(PersistenceManager.stateFile).then(function (data)
return JSON.parse(data);
);
else return null;
);
,
);
)();
【讨论】:
感谢您的回答,但我使用 Windows.Storage.ApplicationData.current 来保存数据,所以我猜它会将文件保存在 .dll 或其他地方。 感谢分享此代码。它在应用程序(visual studio 2015 javascript Apache Cordova)的执行过程中运行良好,但它不会在调用中持续存在。保存数据OK,读取数据OK。关闭应用程序并再次启动,没有数据。我错过了什么?我最终使用了:window.localStorage.setItem(PersistenceManager.stateFile, JSON.stringify(state));并返回 JSON.parse(window.localStorage.getItem(PersistenceManager.stateFile));以上是关于在 Metro Style 应用程序中保存本地数据的主要内容,如果未能解决你的问题,请参考以下文章
我可以在颤振应用程序中保存本地磁盘数据库吗?文档目录在哪里创建路径?