我正在Backbone.js
上迈出第一步,如果View从外部获取undefined
或null
值,我在理解默认值的设置方面遇到了一些问题: / 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}}
存在一种简单的方法吗?
答案 0 :(得分:1)
你的意思是,如果未定义data.type,如何获取默认值?
您需要定义默认值,然后分配一个未定义的默认值。 通过做一个data.type || data.type_default,自动返回未定义的那个。
var data = {
type : undefined,
default_type : "something",
...
}
messageModel.set({
type: data.type || data.default_type,
...
});