共用方式為


快速入門:新增評等 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

使用 Rating 控制項可以讓使用者按一下代表評等的圖示進行評等。這個快速入門會顯示如何將評等控制項新增到使用 JavaScript 的 Windows 市集應用程式。

先決條件

我們假設您可以利用 JavaScript,以 WinJS 控制項建立基本的 Windows 市集應用程式。如需開始使用 WinJS 控制項的指示,請參閱快速入門:新增 WinJS 控制項與樣式

建立評等控制項

若要建立 Rating 控制項,請建立 div 元素,並將 data-win-control 屬性設為 "WinJS.UI.Rating"。以下是如何建立基本評等控制項的範例:

<div id="ratingControl" data-win-control="WinJS.UI.Rating"></div>

注意  為了具現化控制項,您的網頁必須包含 WinJS 的 JavaScript 檔案,而且必須在程式碼後置中呼叫 WinJS.UI.processAll 函式。如需詳細資訊,請參閱快速入門:新增 WinJs 控制項與樣式

 

設定平均評等和最高評等

averageRating 屬性會指定要評等的項目的平均評等。(您可以決定項目的平均評等方式)。 如果您設定 averageRating 屬性,Rating 控制項會顯示它,直到使用者選取自己的評等為止。 下列範例將 averageRating 設為 3.4。

<div id="ratingControl" data-win-control="WinJS.UI.Rating"
    data-win-options="{averageRating : 3.4}"></div>

maxRating 屬性會指定可評等的上限。預設值是 5。下一個範例將 maxRating 設為 7;當控制項顯示時,它會顯示 7 顆星,而非 5 顆星。

<div id="ratingControl" data-win-control="WinJS.UI.Rating"
    data-win-options="{averageRating : 3.4, maxRating : 7}"></div>

取得使用者評等

當使用者挑選評等時,會觸發 change 事件。您可以藉由取得 userRating 屬性的值來取得使用者的評等。

這個範例使用起始頁的啟用事件處理常式,將 change 事件處理常式新增到 Rating 控制項。(如需有關附加事件最佳位置的詳細資訊,請參閱快速入門:新增控制項和處理事件)。

(function () {
    "use strict";

    var app = WinJS.Application;

    // This function responds to all application activations.
    app.onactivated = function (eventObject) {
        if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            // TODO: Initialize your application here.
            WinJS.UI.processAll()
            .done(function () {

                // Get the rating control
                var ratingControl = document.getElementById("ratingControl").winControl;

                ratingControl.addEventListener("change", changeRating);
            });
        }
    };

    app.start();
})();

事件處理函式範例 changeRating 會抓取使用者評等並儲存。

    function changeRating(ev) {
        var ratingControl = ev.target.winControl;
        if (ratingControl) {

            if (ratingControl.userRating != 0) {

                // Put your code here to save user rating and re-calculate average rating.
                WinJS.Application.sessionState.userRating = ratingControl.userRating;

                var appData = Windows.Storage.ApplicationData.current;
                var roamingValues = appData.roamingSettings.values;

                // Write a setting
                roamingValues.insert("userRating", ratingControl.userRating);
            } else {

                // Put your code here to delete user rating.
            }
        }
    }

下一個範例會修改稍早顯示的啟用事件處理常式,使其抓取儲存的使用者評等,並使用它來設定 Rating 控制項。

(function () {
    "use strict";

    var app = WinJS.Application;

    // This function responds to all application activations.
    app.onactivated = function (eventObject) {
        if (eventObject.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            // TODO: Initialize your application here.
            WinJS.UI.processAll()
            .done(function () {

                // Get the rating control
                var ratingControl = document.getElementById("ratingControl").winControl;

                // Retrieve stored state info 
                var appData = Windows.Storage.ApplicationData.current;
                var roamingValues = appData.roamingSettings.values;

                // Read a setting
                var currentRating = parseFloat(roamingValues.lookup("userRating"));

                if (currentRating > 0) {
                    ratingControl.userRating = currentRating;
                }

                ratingControl.addEventListener("change", changeRating);
            });
        }
    };

    function changeRating(ev) {
        var ratingControl = ev.target.winControl;
        if (ratingControl) {

            if (ratingControl.userRating != 0) {

                // Put your code here to save user rating and re-calculate average rating.
                WinJS.Application.sessionState.userRating = ratingControl.userRating;

                var appData = Windows.Storage.ApplicationData.current;
                var roamingValues = appData.roamingSettings.values;

                // Write a setting
                roamingValues.insert("userRating", ratingControl.userRating);
            } else {

                // Put your code here to delete user rating.
            }
        }
    }

    app.start();
})();

摘要與後續步驟

您已學會如何建立 Rating 控制項以及如何儲存及抓取其 userRating。接下來,請閱讀評等控制項的指導方針和檢查清單,了解如何充分運用評等控制項。

相關主題

WinJS.UI.Rating