2012-06-18 35 views
1

我使用节点作为后端构建应用程序的骨干。作为应用程序的一部分,我正在处理我的视图中的点击事件。一个例子是这样的:骨干单击事件打破

window.MyView = Backbone.View.extend({ 
    tagName: 'section', 
    className: 'calls', 

    events: { 
     'click a.first': 'gotoFirst', 
     'click a.prev': 'gotoPrev', 
     'click a.next': 'gotoNext', 
     'click a.last': 'gotoLast', 
     'click a.page': 'gotoPage' 
    }, 

当我第一次加载视图,并点击一切正常工作(单击事件得到正常处理)。但是,如果我浏览到一个新的观点,然后再回到第一个点击事件被打破。

通过导航到一个新的观点我的意思是我做这样的事情:

$container.empty();  
$container.append(window.myNewView.render().el); 

那我先回去,像这样:

$container.empty(); 
$container.append(window.myView.render().el); 

但是,当我重新描绘的看法,我的点击事件被打破。我怎样才能解决这个问题?提前致谢!

回答

3

当你通过调用.empty()你中途破坏DOM事件删除视图。但它们不重新显示视图时,自动重新连接。

你赴汤蹈火重新连接它们。阅读:

http://tbranyen.com/post/missing-jquery-events-while-rendering

更好的答案是不是要重新使用视图实例。创建一个新的视图实例每次你需要显示观看时间。