我有一組路由。在用戶未通過身份驗證的情況下,我想要重定向的一些路由,以及在用戶身份驗證後要重定向的其他路由。Ember.js路由加載順序導致未定義錯誤
的AuthenticatedRoute情況下工作,所以我已經實現了另一種情況如下路線:
App.NotAuthenticatedRoute = Ember.Route.extend
beforeModel: (transition) ->
if App.Auth.get('signedIn')
return Ember.RSVP.reject();
events: {
error: (reason, transition) ->
@transitionTo('home')
}
App.RegistrationRoute = App.NotAuthenticatedRoute.extend
setupController: (controller) ->
controller.set('email', null)
controller.set('password', null)
controller.set('passwordConfirmation', null)
App.LoginRoute = App.NotAuthenticatedRoute.extend
每路是在我的/目錄航線它自己的文件。 RegistrationRoute完全按照預期工作。 LoginRoute,然而,拋出一個錯誤:
Uncaught TypeError: Cannot call method 'extend' of undefined login_route.js?body=1:2
(anonymous function)
我能想到這樣做的唯一原因是加載NotAuthenticatedRoute
之前LoginRoute
被解釋。如果我將not_authenticated_route.js.coffee
中的NotAuthenticatedRoute
更改爲AntiAuthenticatedRoute
,anti_authenticated_route.js.coffee
之類的內容,則一切正常。
我該如何處理裝貨單?
我還解決了這個問題,把我的路由從一個擴展目錄中繼承,這個目錄在路由目錄中的其他文件之前被加載,這可能是一個體面的解決方法。
您使用什麼類型的構建系統,如果有的話?它接縫以相當字母順序的ASC順序加載js文件這可能是爲什麼它的工作原因,如果你改變文件名 – intuitivepixel
我剛剛使用rails資產管道。我不確定目前資產配置對此問題會產生什麼樣的影響。 – DVG
看一下http://guides.rubyonrails.org/asset_pipeline.html,我猜這個陳述是提供信息的:*指令是從上到下處理的,但require_tree包含文件的順序是未指定的。你不應該依賴任何特定的順序。如果您需要確保某些特定的JavaScript最終位於連接文件中的某個其他位置,請首先在清單中要求先決條件文件。請注意,require指令系列可防止文件在輸出中被包含兩次。*聲明最終將預編譯設置爲true應該有助於 – intuitivepixel