我有一個基本路由器,我定義了一些需要在任何地方運行的函數。每個路由器都擴展這個路由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