簡體   English   中英

在Ember.js 1.x路線中使用slu ..

[英]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對象。

見marvilein的回答

你可以做的一件事是創建一個新的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM