2011-12-23 84 views
0

我是新来学习骨干,并在很多的例子和对这里的问题的答案,所以我看到很多人只是添加普通的jQuery或JavaScript到渲染功能,而不是下面的事件或功能的jQuery在骨干

 
events: { 
    'draggable #drag_this': 'drag' 
}, 

drag: function(){ 
    // your jQuery draggable code 
} 

骨干办法,我希望有人能在做事的这两种方式之间的差别扩大,以及为什么会优于另一种,以及在什么情况。

回答

3

事件哈希自动使用委托,这是创建较少事件侦听器的可靠技术。

基本上这两种情况做同样的事情,但在render()函数中注册监听器是一种手动方式,而事件散列是一种声明方式。

如果你使用事件散列,你可以调用this.delegateEvents(),它将使用默认定义的事件散列。 (这是很好的,如果你从dom中删除视图并重新附加它)

我个人使用手动事件绑定在render()函数中,当我使用绑定它自己的侦听器的库时。叽叽喳喳的bootstrap twipsy)。

事件散列是如果它适用于您的应用程序的路要走。这绝对是处理事件的'更主流'方式。

0

我的理解是,当视图被销毁时,手动添加的事件不会被删除,如果您创建并销毁视图,可能会导致“僵尸视图”和内存泄漏 - 除非您在销毁之前删除它们风景。例如。 $( '滑')。滑块( “破坏”)。