我正在尝试做一些我认为应该简单易行的事情。我有两个模特,人和工作。一个人有很多工作。我没有使用ember数据,所以我只是扩展Ember.Object来创建Person和Job“类”。我正在使用一个普通的'ol阵列来保住这个人的工作。
如果我创建两个人并且我为每个人添加一个不同的Job,当我渲染他们的工作时,他们都有相同的工作。我不知道为什么或这样做的正确方法是什么。
App.Person = Ember.Object.extend({
name: null,
jobs: []
});
App.Job = Ember.Object.extend({
name: null
});
App.IndexRoute = Ember.Route.extend({
model: function() {
var john = App.Person.create({name: "John Doe"});
var rake = App.Job.create({name: "Rake leaves."});
john.get('jobs').pushObject(rake);
var jane = App.Person.create({name: "Jane Doe"});
var washCar = App.Job.create({name: "Wash car."});
jane.get('jobs').pushObject(washCar);
// For some reason both john and jane have the same two jobs now.
// They should have one each.
return [john, jane];
}
});
答案 0 :(得分:1)
数组在类的不同实例之间是静态的。您需要在实例创建时将新数组设置为属性值。
在Ember中,对象属性初始化仅对每个类定义运行一次。要解决这个问题,您必须将默认值初始化移动到init方法中,或者只是为每个实例重新定义整个数组。
App.Person = Ember.Object.extend({
name: null,
jobs: null,
setup: function() {
this.set('jobs', []);
}.on('init')
});