立即提交设置Windows 8应用程序

时间:2014-02-27 05:15:19

标签: javascript windows-8 winjs windows-8.1

我试图为Windows 8制作一个有两个输入框和一个按钮的测试应用程序(让我们调用它"计算"按钮)。当用户按下按钮时,他得到一个结果。他可以通过选择要在设置弹出窗口中使用的单位,以公制或英制单位输入其详细信息。现在我要做的就是立即提交更改。当用户选择例如英制单位时,输入框和结果自动变为英制。现在,当我将单位从公制更改为英制时,我必须按下"计算"按钮再次看到帝国的结果。 我怎么能这样做?

以下是我的一些代码。 在默认的.js文件中,我创建了一个按钮处理程序:

var test = document.getElementById("button");
test.addEventListener("click", doDemo, false);

在完成所有计算的主.js文件中,它看起来像这样:

function doDemo(eventInfo) {

    var applicationData = Windows.Storage.ApplicationData.current;
    var roamingSettings = applicationData.roamingSettings;

    if (roamingSettings.values["cmorft"] == 'imperial') {
        var greetingString3 = "Imperial";
        document.getElementById("units").innerText = greetingString3;
    } else {
        var greetingString4 = "metric";
        document.getElementById("units").innerText = greetingString4;
    }

我使用以下内容保存用户的选择:

var applicationData = Windows.Storage.ApplicationData.current;
var roamingSettings = applicationData.roamingSettings;

    WinJS.UI.Pages.define("/html/settings.html", {
        // This function is called whenever a user navigates to this page. It
        // populates the page elements with the app's data.
        ready: function (element, options) {
            var imperialRadio = document.getElementById("imperial"),
                metricRadio = document.getElementById("metric");

            // Set settings to existing values
            if (roamingSettings.values.size > 0) {
                if (roamingSettings.values["cmorft"]) {
                    setMIValue();
                }
            }

            // Wire up on change events for settings controls
            imperialRadio.onchange = function () {
                roamingSettings.values["cmorft"] = getMIValue();
            };
            metricRadio.onchange = function () {
                roamingSettings.values["cmorft"] = getMIValue();
            };
        },

        unload: function () {
            // Respond to navigations away from this page.
        },

        updateLayout: function (element, viewState, lastViewState) {
            // Respond to changes in viewState.
        }

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您只需在更改单位时设置HTML元素的innerText属性,而不仅仅是在单击按钮时。在您的演示中,它可以像在您的单选按钮的onchange处理程序中调用doDemo一样简单,因为它将读取更新的设置并设置文本。