问题
第一次初始化子模型时,仅将子模型的默认值设置为属性。
当第二个(以及所有后续的)孩子被初始化时,孩子的属性显示默认的孩子和它的父母。
var Parent = Backbone.Model.extend({
defaults: {
name: "john",
lname: "smith",
age: 30,
language: "english",
location: "belgium"
}
});
var Child = Parent.extend({
defaults: {
hobby: "doing nothing",
age: 24,
occupation: "student"
},
initialize: function () {
this.constructor.__super__.initialize.apply(this, arguments);
_.defaults(this.defaults, this.constructor.__super__.defaults);
console.log(this.attributes);
}
});
首次初始化子属性:
var child1 = new Child();
child1.attributes :
hobby: "doing nothing"
age: 24
occupation: "student"
同一个子类的属性,第二次初始化:
var child2 = new Child();
child2 属性:
age: 24
hobby: "doing nothing"
language: "english"
lname: "smith"
location: "belgium"
name: "john"
occupation: "student"
问题
为什么在第一次初始化子模型时,并非所有默认值(子模型和父模型)都被设置为属性?
因为我必须Backbone.Collection
在 a中显示一个,<ul>
并且每个模型的属性都可以通过每个<li>
. 但由于这个问题,我无法获得集合中第一个模型的所有属性。