我在 SettingsFlyout 控件中为设置窗格实现了一个条目。页面本身包含一个下拉菜单。用户从此下拉列表中选择的任何选项都需要存储在漫游数据存储中。显然,每当用户在设置窗格中访问此页面时,都需要检索此存储的数据。我不确定为数据阶段和检索编写此代码的最佳位置是什么?我看到 SettingsFlyout 对象具有 onafterhide、onaftershow、onbeforehide 和 onbeforeshow 事件。是否应该将其中任何一个用于此目的?
2 回答
在设置浮出控件中更改的设置应在用户进行更改后立即生效,而不是等到浮出控件被隐藏。我建议将您的弹出窗口视为页面控件。
假设您的设置弹出窗口是在 中定义的settings/mySettings.html
,请创建一个名为的 JavaScript 文件settings/mySettings.js
并在您的设置页面的头部引用它。然后将以下代码添加到脚本文件中。
(function () {
"use strict";
var page = WinJS.UI.Pages.define("/settings/mySettings.html", {
ready: function (element, options) {
// wire up event handlers for saving changes
// setup initial state
},
});
})();
就像任何其他页面控件一样,您添加事件处理程序并在就绪函数中初始化页面。如果您熟悉导航应用程序模板,则相同。
[Windows.Storage.ApplicationData.Current.localSettings] ( http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.applicationdata.aspx ) 或 roamingSettings 为获取/设置提供内置支持设置键值对。它还处理持久化到应用程序数据文件夹中的文件。它还需要根据文档进行批处理。
您可以在应用程序数据示例中找到参考代码
var roamingSettings = Windows.Storage.ApplicationData.current.roamingSettings;
function settingsWriteSetting() {
roamingSettings.values['my setting'] = 'my setting value';
}
关于浮出控件上的事件 - 在整个用户流程中,可以使用事件在浮出控件隐藏之前/之后采取一些行动。例如 - 我曾经围绕一个登录弹出框创建了一个 Promise。afterhide
用于为 promise 调用错误回调,错误为取消。