我目前正在測試Ember.Router
,我想知道如何在匹配特定條件時限制對某些特定路線的訪問。在我的示例中,我正在使用結帳過程,在該過程中必須設置帳單地址,然後用戶才能繼續使用結算方法等(例如:結算方法視圖需要知道結算國家以提供其允許的付款方式)。我試圖驗證模型(serialize:function()或可能輸入:function()?),並且當給定的值沒有設置,路由器應該重定向到以前的狀態(有以稍微的超時執行此操作,否則哈希將無法正確更新)。限制訪問Ember.js中的特定路線(Ember.Router)
這裏是我的示例代碼
http://jsfiddle.net/mediastuttgart/uMKGt/
編輯小提琴:
發現湯姆·戴爾一些話,但沒有涉及到這個問題,但仍然是一個很好的答案:「整個國家的一點是要避免這樣的情況......目前的國家有責任處理它們。「
cf. http://github.com/emberjs/ember.js/issues/745
那麼這是有道理的。
EDIT2:
雖然這是有道理的,而定位方法設置爲 '零'。當使用'hash'或'history'來處理位置狀態並且用戶在比/ index更深的路線上重新加載頁面時 - 當前路線必須驗證這些值,並且如果某個標準不匹配,則最終重定向到先前的路線而確實驗證屬於之前的路線)。爲了簡短起見,現在的路由驗證應該取決於前一個路由,並且在滿足所有條件時應該重定向到一個狀態。
逆序:
- 交付方法? (/#/ delivery/method)nope - >
- 結算方式? (/#/ billing/method)nope - >
- 送貨地址? (/#/ delivery/address)nope - >
- 賬單地址 - (/#/ billing/address)請從這裏開始。
期待看到一些EmberJS鄉親澄清一些事情:)