Google app engine &引用;加:型号“;未触发主干关系
我刚刚开始处理主干关系,我面临“HasMany”案例的问题 首先是模型:Google app engine &引用;加:型号“;未触发主干关系,google-app-engine,backbone.js,backbone-relational,Google App Engine,Backbone.js,Backbone Relational,我刚刚开始处理主干关系,我面临“HasMany”案例的问题 首先是模型: var Word = Backbone.RelationalModel.extend({ urlRoot: '/test/api/word', idAttribute: '_id' }); var List = Backbone.RelationalModel.extend({ urlRoot: '/test/api/list', idAttribute: '_id', r
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”,因此不会显示这些单词
尝试了一些方法,但没有奏效。我呈现列表本身或其他内容的方式有问题吗?
this.model.bind('add:words',this.renderWords)只要模型是一个集合,代码>就可以工作。否则,模型将显式地提供该事件。顺便问一下,你可以在初始化函数中转储this.model.toJSON()
,并添加到你的问题中。model.toJSON()的转储示例给出了这个-{“列表名”:“矿山”,“id”:32,“单词”:[{“定义”:“陡坡”,“id”:21,“单词名”:“上升”}],“描述”:“随机列表”}
。另外,add:words
什么时候被触发?你能试试这个this.model.get(“words”).bind('add:words',this.renderWords)吗代码>您使用的是什么版本的backbone.js?它似乎不起作用。我使用的是0.9.2版