在backbone.js ToDos example中,ToDo构造函数的initialize
方法将title
属性设置为默认标题。
这不是不必要的吗?我认为默认值是他们自动分配?或者我错过了什么?
var Todo = Backbone.Model.extend({
// Default attributes for the todo item.
defaults: function() {
return {
title: "empty todo...",
order: Todos.nextOrder(),
done: false
};
},
// Ensure that each todo created has `title`.
initialize: function() {
if (!this.get("title")) {
this.set({"title": this.defaults().title});
}
},
///...
);}
答案 0 :(得分:5)
只有在没有相应的属性传递给构造函数时,才会应用默认值。在这种情况下,可能确保使用空字符串作为标题创建的项目显示其中的内容。比较
var Todo1 = Backbone.Model.extend({
defaults: function() {
return {
title: "empty todo...",
done: false
};
},
initialize: function() {
if (!this.get("title")) {
this.set({"title": this.defaults().title});
}
}
});
var t1 = new Todo1({
title: ""
});
带
var Todo2 = Backbone.Model.extend({
// Default attributes for the todo item.
defaults: function() {
return {
title: "empty todo...",
done: false
};
}
});
var t2 = new Todo2({
title: ""
});
t1.get('title')
空todo ... ,t2.get('title')
将为空字符串。不向两个构造函数传递任何参数确实会使用默认值。