今日、backbone.js(0.9.2 => 0.9.9)とbackbone-relational(0.5.0 => 0.7.0)を更新しましたが、コードの一部が機能しなくなり、理由がわかりません。(私は段階的にアップグレードしようとしましたが(たとえば、バックボーンリレーショナル0.5.0 => 0.6.0)、それは役に立ちませんでした。)
私のモデル(いくつかの章を含む本):
window.Book = Backbone.RelationalModel.extend({
relations:[{
type: Backbone.HasMany,
key:"chapters",
relatedModel: "Chapter",
collectionType:"ChaptersCollection",
reverseRelation:{
key:"book"
}
}]
});
window.BookCollection = Backbone.Collection.extend({
model: Book,
url: "/books"
});
window.Chapter = Backbone.RelationalModel.extend();
window.ChaptersCollection = Backbone.Collection.extend({
model: Chapter,
url: "/chapters"
});
次に、既存の本に章を追加し、「追加」イベント中に何かを実行したいと思います。問題はchapter.get("book")
、本がコールバックundefined
で返されるにもかかわらず、ということです。success
しかし、自分自身を見てください:
var book = ...;
book.get("chapters").on("add", function (chapter) {
console.log("add");
console.log(chapter.get("id"));
console.log(chapter.get("book_id"));
console.log(chapter.get("book"));
});
var chapter = book.get("chapters").create({title:"Foo"}, {
wait: true,
success:function () {
console.log("success")
console.log(chapter.get("id"));
console.log(chapter.get("book_id"));
console.log(chapter.get("book"));
}
});
コンソール出力:
> add
> 83
> 3
> null <<<<<<< Expecting a book object here, why null?
> success
> 83
> 3
> Book{...}
私が何を間違っているのか分かりますか?