1.在首页 加入 一个元素(加下滑线的)。此元素绑定了两个属性
App1
2.定义viewmodel, 并监听 viewmodel的属性变化。这样就可以在属性变化的时候,在更新UI的同时,去做想做的事。比如:更改本地存储。首页js 如下:
(function () { "use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = WinJS.Application; var activation = Windows.ApplicationModel.Activation; WinJS.Application.onsettings = function (e) { //添加设置的选项 e.detail.applicationcommands = { // href: 是设置相关信息使用的页面 | title: 就是 设置显示的文字 | color : 对应 settings.html 内 拥有 data-win-control="WinJS.UI.SettingsFlyout" 属性的元素的id "color": { href: "pages/settings.html", title: "更改字体颜色&内容" } }; //把 自定义的设置选项 添加到 设置窗口 WinJS.UI.SettingsFlyout.populateSettings(e); }; app.onactivated = function (args) { if (args.detail.kind == activation.ActivationKind.launch) { //定义一个 ViewModel WinJS.Namespace.define("ViewModel", { Settings: WinJS.Binding.as({ color: "red", text: 'aaaasdasdasdsa' }) }); //需要观察的属性 var settings = ['color', 'text']; //给 viewmodel 绑定 属性改变事件 AddisonUitl.BindViewModelEvent(ViewModel.Settings, settings); WinJS.UI.processAll().then(function () { //绑定数据 WinJS.Binding.processAll(document.getElementById('aa'), ViewModel.Settings); }) } } app.start();})();
3.因为在 添加自定义设置 选项的时候,需要一个设置页面,下面是 settings.html
Colors背景颜色
更改内容
4.下面是 util.js 的代码:
WinJS.Namespace.define('AddisonUitl', { ////// property of ViewModel /// the key in param name BindViewModelEvent: function (name, eventType) { var that = this; eventType.forEach(function (item, index) { //载入 用户设置 信息 var valArray = Windows.Storage.ApplicationData.current.localSettings.values; if (valArray[item] != undefined) { name[item] = valArray[item]; } //绑定属性改变事件 name.bind(item, function (newVal, oldVal) { if (oldVal != null) { that.storeSetting(item, newVal); // that.updateViewModel(name, item, newVal); } }) }) }, storeSetting: function (key, value) { var store = Windows.Storage; store.ApplicationData.current.localSettings.values[key] = value; }, updateViewModel: function (name, key, value) { name[key] = value; }})