我正经历着学习Backbone.js的过程,我遇到了一些东西,这些东西在他们看来是有效的,但是在幕后,它们可能造成一些问题。其中一个问题就是互换观点的设计模式。
我左侧有一个菜单( 和相应的视图), 包含用户列表。 每个用户单击后, 都会向右显示相应的电影列表到另一个视图。 我这样做的方法是获取点击用户的模型, 根据该模型建立一个新的电影收藏, 并制作一个新的电影视图( 向右 ) 。 如果我点击另一个用户, 它也会做同样的事情 : 它会获得用户模型, 新建一个电影收藏, 并将新的电影视图向右, 替换 DOM 元素 。 这看起来不错, 但我担心正在创建的所有新对象/ 约束性, 以及可能出现的问题 。 因此, 我有什么其他选择?
(1) 在收藏变化时,我是否应该尝试重新绘制视图?如果我创建新的收藏,我该怎么办?
(2) 或者在点击另一个用户时,我是否应该无拘无束?
以下是我的用户列表视图 :
Window.UsersList = Backbone.View.extend({
el: $("#users"),
initialize: function(){
this.collection.bind( reset , this.render, this);
},
render: function(){
var users = [];
this.collection.each(function(user){
users.push(new UsersListItem({model: user}).render().el);
},this);
$(this.el).html(users);
return this;
}
});
在我的用户列表视图中, 我捕捉点击事件, 并在我的控制器中调用 show_ user_ movies :
show_user_movies: function(usermodel){
// fetchMovies() lazy-loads and returns a new collections of movies
var movie_collection = usermodel.fetchMovies();
movie_list = new MovieList({collection: movie_collection, model: usermodel});
movie_list.render();
},
谢谢你的建议