我有一个基本路由器,我定义了一些需要在任何地方运行的函数。每个路由器都扩展这个路由Backbone.js路由没有触发
现在我的问题是,在这个基础路由器中定义的我的路由都没有实际触发。其他路由器中的其他路由工作正常。我创建了一个称为'a'的测试路线,它调用方法'b',它应该发出警报但没有任何反应。
下面是代码:(这是CoffeeScript中,不注重压痕,它的罚款在我的文件)
class Etaxi.Routers.Base extends Backbone.Router
routes:
'register' : 'registerDevice'
'a' : 'b'
b: ->
alert "a"
initialize: ->
@registerDevice() unless localStorage.device_id?
@getGeolocation()
registerDevice: ->
@collection = new Etaxi.Collections.Devices()
@collection.fetch()
view = new Etaxi.Views.RegisterDevice(collection: @collection)
$('#wrapper').append(view.render().el)
getGeolocation: ->
navigator.geolocation.getCurrentPosition (position) ->
lat = position.coords.latitude
lng = position.coords.longitude
#$('#apphead').tap ->
# alert 'Position: ' + lat + " ," + lng
所以,当我参观“/注册”或“/ A”它应该发射适当的方法,但它没有。我想知道它是否与其他路由器从此路由器延伸的事实有关?将有线,但它是我能想到的唯一的事情,因为每个其他路由器工作正常。
更新
我想我已经在我的主要应用.js文件实例化基地路由器找到了解决办法。这就是我现在所做的:
您是否看到任何可能的问题?
非常感谢您解释详细的问题。我已经用一个可能的解决方案更新了我的帖子,但我不确定这是否是一个好方法,也许你可以看看。 – 2012-03-21 23:35:07
@ drale2k:我想我可能在评论时添加了类似的更新。有多条路线没有错,请检查我更新的答案的底部。即使如此,'@ :: routes = _(R :: routes).extend('c':'d')'窍门简直就是那种:) – 2012-03-21 23:40:09
啊呵呵,所以我们有同样的想法:)谢谢您! – 2012-03-21 23:45:52