[英]Using a slug in Ember.js 1.x routes
我正在拼命試圖讓Ember 1.x工作。
我的序列化方法似乎工作正常。 我可以使用link-to helper或transitionToRoute方法導航到我的路線沒有問題。 但是當我重新加載我的頁面時,我得到了一堆錯誤,因為我的承諾在一組模型而不是單個模型中解析。
如何將findQuery的結果減少到一個模型?
我在這里找到了一個老版本Ember.js的有用答案: 在emberjs路線中使用slug不幸的是,解決方案不再適用了。 “one”未定義,因此我嘗試將我的代碼調整為當前版本。 根據promise文檔,promise對象的then方法中的返回值應該傳遞給下一個處理程序。 但我之后仍然會得到一個陣列和我的錯誤。
我的路線實施:
App.ManageRoute = Ember.Route.extend
model: (params) ->
promise = @get('store').findQuery('company', {slug: params.company_id})
promise.then (models) ->
return models.get("firstObject")
return promise;
serialize: (model, params) ->
return {company_id: model.get('slug')}
[更新]
解決方案是為單個模型創建並返回一個新的Promise對象。
你可以做的一件事是創建一個新的promise,它代表一個對象而不是整個數組:
App.ManageRoute = Ember.Route.extend
model: (params) ->
promise = @get('store').findQuery('company', {slug: params.company_id})
newPromise = Ember.Deferred.create()
promise.then (models) ->
newPromise.resolve(models.get("firstObject"))
return newPromise;
PS:我不知道coffeescript所以可能會有輕微的語法錯誤。 我不知道Ember Data是否提供了更方便實現此行為的方法:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.