Backbone Click Events Breaking

时间:2012-06-18 00:34:40

标签: jquery node.js javascript-events backbone.js

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

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);

但是当我重新渲染视图时,我的点击事件就被打破了。我怎样才能解决这个问题?提前谢谢!

1 个答案:

答案 0 :(得分:3)

当您通过调用.empty()删除视图时,您正在中途销毁DOM事件。但是,在自动重新显示视图时,它们不会重新附加。

你必须跳过篮球重新连接它们。读这个:

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

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