English 中文(简体)
2.js.js - 无约束力和互换视图
原标题:backbone.js - unbinding and swapping views

我正经历着学习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(); 
    },

谢谢你的建议

最佳回答

只要重新使用相同的 MovieList 视图及其相关收藏, 使用 < code> reset( models) 更新收藏中的模型, 这应该重新复制视图。 您可以使用与收藏 < code> reset 事件绑在一起的上述模式, 并在那个时候重新显示自己。 请注意, < code> usermations. fetchMovies () 并不遵循使用 < code> suscess/ eror 回调的骨干非同步模式, 所以我我不认为代码是正常的( 您可以为本问题的目的简化), 但关键是当新模型集从服务器到达时, 将它传送到 < code> movie_ list. coging. rescet 并且您可以重新运行。 这样您不必担心没有约束性的事件并创建新视图 。

show_user_movies: function(usermodel){
    // fetchMovies() lazy-loads and returns a new collections of movies
    movie_list.collection.reset(usermodel.fetchMovies().models); 
},
问题回答

暂无回答




相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签