我了解到,我们可以通过使用 new model.List({}) 来代替使用 model.findAll 并在 findAll 的回调函数中编写代码。例如,jsfiddle --> http://jsfiddle.net/CRZXH/48/ .. 在这个 jsfiddle 示例中 List 实现工作但 findOne 失败。
var people = new Person.List({});
return can.Component({
tag: 'people',
template: initView,
scope: {
people: people
}
})
上面的示例工作正常,最初人员被分配了空对象,但在 ajax 调用后,完整的人员变量会自行更新列表和视图更新。
在 findOne 的情况下如何实现相同的目标?
var person = PersonModel.findOne({});
can.Component({
tag: 'person',
template: initView,
scope: person
})
这失败了……
我确实解决了如下问题:
var person;
PersonModel.findOne({},function(data){
person = data
});
can.Component({
tag: 'person',
template: initView,
scope: person
})
这仅在我在 findeOne ajax 调用中添加 asyn=false 时才有效。