2

私は次のモデルを持っています:

    var User = Backbone.Model.extend({
            defaults: {
                status:     this.constructor.status.OFFLINE,
            },
        },
        {
            status:   {
                OFFLINE: 0,
                ONLINE:  1,
                BUSY:    2,
                AWAY:    3,
            },
        }
    );

私も試しました:

status:     User.status.OFFLINE

しかし、私はこのエラーを受け取り続けます:

TypeError: 'undefined' is not an object (evaluating 'this.constructor.status.OFFLINE')

またはこれ:

TypeError: 'undefined' is not an object (evaluating 'User.status')

何か助けはありますか?ありがとう

4

1 に答える 1

3

ユーザーモデルの作成時に定義されていない静的プロパティを参照しようとしています。

デフォルトを関数として定義する

var User = Backbone.Model.extend({
    defaults: function() {
        return {status: User.status.OFFLINE}
    }
}, {
    status:   {
        OFFLINE: 0,
        ONLINE:  1,
        BUSY:    2,
        AWAY:    3
    }
});

http://jsfiddle.net/nikoshr/6XuC8/

または、最初に静的プロパティを定義してから、User.prototypeを拡張してデフォルトを追加します。

var User = Backbone.Model.extend({}, {
    status:   {
        OFFLINE: 0,
        ONLINE:  1,
        BUSY:    2,
        AWAY:    3
    }
});

_.extend(User.prototype, {
    defaults: {
        status: User.status.OFFLINE
    }
});

var u = new User();
console.log(u.get('status'));

http://jsfiddle.net/nikoshr/6XuC8/2/

于 2012-10-22T14:26:58.327 に答える