我真的不能满脑子都在这一个。 出于某种原因,(我怀疑它是与异步请求)使用正确的的toJSON()函数我的模型属性没有被转换。 FWIW,我试图做延迟加载与Django的关系fetchRelated()。
这里就是我所做的fetchRelated()请求,并创建一个新的观点。
$.when(usermodel.fetchRelated("movies")).then(function(){
var newview = new UserMovieList({model: usermodel});
newview.render();
});
这会调出以下渲染功能:
render: function(){
$(this.el).html(this.template({}));
var usermodel = this.model;
var wrapper = $(".movies");
var recipes = usermodel.get("movies");
movies.each(function(movie){
var movie_item = new UserMovieListItem({
model:movie
});
movie_item.render();
wrapper.append(movie_item.el);
});
return this;
然后调用UserMovieListItem渲染功能:
render: function(){
console.log("movies to JSONify", this.model.attributes);
console.log("movies JSONified", this.model.toJSON());
$(this.el).html(this.template(this.model.toJSON()));
return this;
这里是踢球。 所述第一的console.log(this.model.attributes)显示所有的属性,因为它们应该的。 这似乎完全正常。 但(this.model.toJSON())只返回了其中的fetchRelated()之前提供的URI和id属性。 到底是什么怎么回事? 如果我绑定this.model在UserMovieListItem与“变革”来渲染,然后它会呈现,但在半秒左右...},
我的用户模型定义为这样的:
window.User = Backbone.RelationalModel.extend({
urlRoot: '/movie/api/v1/users/',
relations: [{
type: Backbone.HasMany,
key: 'movies',
relatedModel: 'Movie',
collectionType: 'UserMovieCollection',
reverseRelation: {
key: 'user',
includeInJSON: 'id'
}
}],
select: function(){
var model = this;
model.set({selected: true});
}
});