2014-02-27 68 views
0

我想爲Windows 8製作一個測試應用程序,它有兩個輸入框和一個按鈕(讓我們稱之爲「計算」按鈕)。當用戶按下按鈕時,他會得到結果。他可以通過選擇想要在設置彈出窗口中使用哪些單位,以公制或英制單位輸入他的詳細信息。現在我想要做的是立即提交更改。當用戶選擇例如英制單位時,輸入框和結果自動變爲英制。現在,當我將公制單位從英制轉換到英制時,我必須再次按下「計算」按鈕才能看到英制結果。 我該怎麼做?立即提交設置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

如果我理解正確的話,你只需要當你更改單位,設置你的HTML元素的innerText屬性不只是當你點擊按鈕。在你的演示中,它可以像在你的單選按鈕的onchange處理程序中調用doDemo一樣簡單,因爲它將讀取更新後的設置並設置文本。