WinJS枚举

时间:2014-02-19 09:28:59

标签: windows-8 winjs windows-8.1

如何在WinJS中进行枚举?

我试图创建一个这样的类,例如:

(function () {
"use strict";

var TaskEnum = WinJS.Class.define(
null,
{},
// The set of static members.
{
    SUPERVISION: 1,
    DIG: 2,
    MAP: 3,
});


var Task = new TaskEnum();

WinJS.Namespace.define("ENUMS", {
    TASK: {
        get: function () {
            return Task;
        }
    }
});


})();

但是当我打电话给ENUMS.TASK.DIG时,DIG未定义。

我甚至试过这个:

WinJS.Namespace.define("ENUMS", {
    TASK:  { SUPERVISION: 1, DIG: 2, MAP: 3, }
});

但是当我打电话给ENUMS.TASK.DIG时,DIG仍未定义。

似乎Namespace.define不能以这种方式工作?

2 个答案:

答案 0 :(得分:1)

我可能不明白你希望摆脱Namespace定义,但不只是使用核心JavaScript?

window.ENUMS = {
    TASK: {
        SUPERVISION: 1,
        DIG: 2,
        MAP: 3
    }
};

然后像尝试一样使用它:

callSomeFunction(ENUMS.TASK.DIG);

请注意,如果您可以将用户限制为IE11(在Win8应用中不那么困难),那么您也可以通过const使用JavaScript constants

答案 1 :(得分:1)

哦,如果我确切地知道你,你想在JavaScript中定义Enumeration吗? 对 ? 对于这种情况,我不认为是否在Windows Store App上使用WinJs, 但我有两个建议作为我的答案:

1)使用C#作为Runtime Component来执行此操作,方法是在c#中定义一个函数,然后在JavaScript上调用它。

See ,Creating a simple component in C#.

2)Enumerated types in JavaScript

或参见: WinJS.UI命名空间
http://207.46.99.208/pl-pl/library/windows/apps/br229782#enums_section