【发布时间】:2011-12-20 13:02:46
【问题描述】:
我在 Spine.js 控制器中定义了一个事件,就像在 CoffeeScript 中一样:
class Charter extends Spine.Controller
events:
'tap #update': 'update'
constructor: (params) ->
super
update: (e) ->
dosomething()
false
当点击#update链接时,更新函数被调用,但链接也被激活并将浏览器指向该URL。
我试过 e.preventDefault()、e.stopPropagation(),返回 false 无济于事。 该事件似乎已正确形成,currentTarget 是#update 链接,所以我想知道它是否是 Spine 处理事件的方式所独有的(我在 Backbone.js 中对此没有任何问题)
【问题讨论】:
-
你试过
e.preventDefault()之前dosomething()吗?如果它抛出错误,您可能永远无法返回。 -
是的,我已经尝试了
e.preventDefault()和e.stopPropagation,因为更新方法没有任何运气。 -
即使我在更新方法中除了尝试停止事件之外没有做任何其他事情,我仍然会被引导到新页面。控制台日志显示每次都会调用更新方法。
-
在这个测试中:tinkerbin.com/1j5RMnu1 工作正常(使用
click,tap不会在点击时触发)。您能否提供您的代码的(非)工作示例? -
我在移动设备上测试了该应用程序,本应引导浏览器的正常超链接无法正常工作。我查看了包含的库,它看起来像 Spine.js 的触摸模块阻止了触摸设备主体上的点击事件,但捕获了非触摸设备主体上的点击事件以触发它自己的点击事件.
标签: javascript coffeescript spine.js