这是我正在尝试做的事情:我首先加载一个活动站点用户列表,每个用户都与一个电影列表相关联。当我点击一个用户时,我希望他的电影列表出现在下一个菜单上。但是,我没有在初始 JSON 请求中为每个用户加载完整的电影列表,而是尝试使用与骨干关系打包的 model.fetchRelated("key") 选项进行一些延迟加载。
在我看来,我有一个事件监听器:
events: {
'click .username': 'showMovies'
},
showMovies: function(event){
event.preventDefault();
this.model.select();
}
在我的模型中,我有一个选择功能:
select: function(){
this.set({selected: true});
this.fetchRelated("movies");
var usermovies = new UserMovieCollection();
usermovies.add(this.get("movies"));
}
问题是 this.fetchRelated("movies") 是一个异步事件,所以当调用 'add' 时,实际上并没有加载电影。所以我想知道我的选择是什么。我的一个想法是以某种方式将其包装到 jQuery 的延迟对象中......基本上,使用回调。不过,我不确定如何执行此操作,并且我不确定使用回调形式是否真的是很好的 Backbone 设计。
有谁知道我如何使用回调或某些(首选)系统来实现这一点?谢谢!
编辑:
我已经设法使用延迟来获得它,但我仍然想知道是否有没有延迟的更好的骨干解决方案。
select: function(){
var model = this;
var usermovies = new UserMovieCollection();
$.when(this.fetchRelated("movies")).then(function(){
console.log(model.get("movies"));
});
}