0
var User = Parse.User.extend({
    // instance members
}, {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2,
    types: {
        TYPE_TRAINER : 'Trainer',
        TYPE_ATHLETE : 'Athlete'
    }
});

テンプレートでオブジェクトを使用できるように、オブジェクトの前に定義された値を保持して維持しTYPE_TRAINERたいと思います。TYPE_ATHLETE12typestypes

Parseについて知らない場合Parse.Userは、の拡張子ですBackbone.Model

ありがとう!

4

2 に答える 2

1

あなたが求めていることは、JavaScriptオブジェクトリテラルでは直接不可能です。オブジェクトリテラルは、常に左側/キー側のリテラル値です。

最も近い方法は、キーTYPE_TRAINERTYPE_ATHLETEキーを変数として使用して、オブジェクトのキーと値のペアにアクセスするための角括弧構文を介して値を割り当てることです。

var a = 1;
var b = 2;

var obj = {};
obj[a] = "a";
obj[b] = "b";

これにより、objオブジェクトは次のようになります。


{
  1: "a",
  2: "b"
}

したがって、次のようなことを実行して、コードに必要なものを取得できます。


var userMethods = {
    // types
    TYPE_TRAINER : 1,
    TYPE_ATHLETE : 2
};

userMethods[userMethods.TYPE_TRAINER] = 'Trainer';
userMethods[userMethods.TYPE_ATHLETE] = 'Athlete';

var User = Parse.User.extend({
    // instance members
}, userMethods);

それはおそらくあなたが望むよりも多くのコードですが、オブジェクトリテラル構文のためにあなたが望むものを達成する唯一の方法です。

于 2012-06-05T02:50:01.180 に答える
0

Parse.ObjectJavascriptのドキュメントには次のように書かれています。

次のいずれかに電話する必要があります。

var MyClass = Parse.Object.extend("MyClass", {
    // Instance properties
}, {
    // Class properties
});

または、バックボーンの互換性のために:

var MyClass = Parse.Object.extend({
    className: "MyClass",
    // Other instance properties
}, {
    // Class properties
});

Parse.User「クラス」(クラスではなくオブジェクト)を拡張する場合は、それ自体がの拡張であるclassNameため、上記のようにを含める必要があります。Parse.UserParse.Object

于 2012-06-05T02:48:49.037 に答える