Backbone.js模型默认值是否覆盖null,undefined等。我放入View?

时间:2013-03-24 21:30:01

标签: backbone.js override default-value

我正在Backbone.js上迈出第一步,如果View从外部获取undefinednull值,我在理解默认值的设置方面遇到了一些问题: / p>

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 覆盖 data参数并强制它使用defaults""undefined 1}},null$(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(); });

{{1}}

存在一种简单的方法吗?

1 个答案:

答案 0 :(得分:1)

你的意思是,如果未定义data.type,如何获取默认值?

您需要定义默认值,然后分配一个未定义的默认值。 通过做一个data.type || data.type_default,自动返回未定义的那个。

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

messageModel.set({
 type: data.type || data.default_type,
 ...
});