我試圖將我的應用遷移到新的emberjs路由API。Emberjs新的路由和查詢字符串或自定義路由匹配器
使用舊路由器我有一些解決方法,爲由ID保存的對象和通過一組參數描述的新對象提供類似的URI。這是爲了在用戶之間交換鏈接到對象的能力而沒有永久保存它。這是從我的應用的兩種簡化有效的途徑:
/objects/12 // fetch object by id (/objects/:object_id)
/objects/<serialized params> // build new object from params (/objects/:params)
此路線的兩個類似於路由器,因爲它們都具有動態部分和靜態部分是相等的。所以我寫了自定義RouteMatcher
以拾取正確的路線。缺乏查詢字符串解析迫使我做這個快速和半解法的解決方案,也有關於github上的這個功能的ancient ticket。
隨着新的路由器匹配已被提取到單獨的包(路由識別器),所以我不能做的伎倆(或它將充滿黑客和注入)。
我可以看到我已經從這些選項中進行選擇:
- 完全重寫我的URI和獨立的所有交叉路線
- 重寫的URI,但試圖實現查詢字符串分析器新Ember.Router
- 將所有邏輯成一條路由並重新實現只序列化/反序列化方法(髒東西)
二的解決方案似乎更乾淨。
什麼是最好的非複雜的決定?我應該嘗試尋找另一種方式嗎?
覆蓋路線的模型方法並沒有訣竅? – zaplitny
這是選項#3。當然,它會做,但休息部分路線是略有不同的保存和新的對象,所以邏輯會搞砸。 – konung