model.findAll を使用して findAll のコールバック関数にコードを記述する代わりに、new model.List({}) を使用して同じことを達成できることを学びました。たとえば、jsfiddle --> http://jsfiddle.net/CRZXH/48/ .. この jsfiddle の例では、リストの実装は機能しますが、findOne は失敗します。
var people = new Person.List({});
return can.Component({
tag: 'people',
template: initView,
scope: {
people: people
}
})
上記の例は正常に動作します。最初は people に空のオブジェクトが割り当てられますが、ajax 呼び出しが完了した後、 people 変数はリストとビューの更新で更新されます。
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 を追加した場合にのみ機能します。