0

私は最初の一歩を踏み出しましたが、ビューが外部から値を取得した場合Backbone.jsにデフォルト値がどのように設定されるかを理解するのに問題があります。undefinednull

var Status = {
    Models: {},
    Collections: {},
    Views: {},
    Templates:{}
}
Status.Models.Message = Backbone.Model.extend({
    defaults:{
        icon:'path/info-icon.png',
        type:'warning',
        title:'Information',
        message:'There is nothing to read here.'
    },
    initialize:function () {
        console.log("Status.Models.Message initialized");
    }
});

Status.Views.Message = Backbone.View.extend({
    initialize:function () {
        console.log("Status.Views.Message initialized");
    },
    render:function () {
        var template = _.template($('#status-message-template').html());
        $('body').append($(this.el).attr('id', 'status-message').html(template(this.model.toJSON())));
        var timer = setTimeout(function () {$('#status-message').addClass('enter')}, 1500);

    }
});

Backbone.js paramsをオーバーライド して、値が、またはの場合に値dataを使用するように強制する方法を見つけたいと思います。defaults""undefinednull

$(function(){
    var data = {
       type:undefined,
       message:'This is the new message!'
    };
    var messageModel = new Status.Models.Message ();

    messageModel.set({
        type: data.type, // how to let it get defaults.type because data.type is undefined?
        message: data.message
    });

    var messageView = new Status.Views.Message({
        model:messageModel
    });
    messageView.render();
});

それを行う簡単な方法はありますか?

4

1 に答える 1

1

data.typeが未定義の場合にデフォルト値を取得する方法を実際に意味しますか?

デフォルト値を定義してから、未定義でない値を割り当てる必要があります。data.typeを実行することによって|| data.type_defaultは、未定義ではないものを自動的に返します。

var data = {
 type : undefined,
 default_type : "something",
 ...
}

messageModel.set({
 type: data.type || data.default_type,
 ...
});
于 2013-03-24T22:31:15.323 に答える