バックボーン リレーショナルの作業を開始したばかりで、"HasMany" ケースの問題に直面しています。
まずモデル:
var Word = Backbone.RelationalModel.extend({
urlRoot: '/test/api/word',
idAttribute: '_id'
});
var List = Backbone.RelationalModel.extend({
urlRoot: '/test/api/list',
idAttribute: '_id',
relations: [{
type: Backbone.HasMany,
key: 'words',
relatedModel: 'Word',
reverseRelation: {
key: 'list',
includeInJSON: '_id'
}
}]
});
「単語」が次のようにレンダリングされるはずの「リスト」モデルのビュー:
var ListWordsView = Backbone.View.extend({
tagName: 'div',
initialize: function(){
_.bindAll(this,'render', 'renderWords');
//alert("its clicked!," + this.model.get('desc'));
this.model.bind('change',this.render);
this.model.bind('reset',this.render);
this.model.bind('add:words',this.renderWords);
},
renderWords: function(word){
alert("hello it's there!" + word.get("word_name"));
var wordView = WordView({ model: word });
this.$("#words_list").append(wordView.render());
},
render: function(){
try{
$("#list_box.title_name").html(this.model.get('list_name'));
this.model.toJSON();
//this.model.get('words').each(renderWords);
//this.setContent();
alert(JSON.stringify(this.model));
}
catch(e){
alert("error! : " + e.message);
}
}
});
したがって、この ListWordsView が呼び出されたとき (List の fetch() が実行された後) に問題が発生し、「add:words」がトリガーされないため、単語が表示されません。
いくつかの方法を試しましたが、うまくいきませんでした。リスト自体または他のものをレンダリングする方法に問題はありますか?