2013-07-28 22 views
2

我試圖在使用FIXTURES的測試應用程序中模擬緩慢的後端。我做了以下情況:如何用FIXTURES模擬一個緩慢的REST後端?

App.SlowIndexRoute = Ember.Route.extend({ 
    model: function() { 
     return new Ember.RSVP.Promise(function(resolve) { 
      Ember.run.later(function() { 
       resolve(App.Node.find()); 
      }, 2000); 
     }); 
    } 
}); 

我期待,這將表現類似於一個緩慢的REST後端,即:

  1. 請求被髮送
  2. 路線被激活,該模板呈現
  3. 回覆從後端
  4. 現在數據在模板更新到達

相反,這大致發生了什麼,只要我可以告訴:

  • 模板沒有渲染進行

    1. 請求被髮送,路由還未被激活。
    2. 一旦回覆「降臨」(resolve(App.Node.find());)的路線被激活
    3. 模板被渲染,並且由於數據是已經上市,它也顯示

    我怎樣才能更準確地模擬一個緩慢REST後端?如何確保路由器在之前激活視圖/模板?答覆到達?

  • 回答

    4

    DS.FixtureAdapter的latency屬性默認爲50毫秒。您可以在創建商店時通過手動實例化適配器來更改此選項。

    App.Store = DS.Store.extend({ 
        adapter: DS.FixtureAdapter.create({ latency: 1000 }); 
    }); 
    

    從Ember 1.0.0-rc.6開始,在轉換之前,預計路徑會等待模型的承諾解決。如果您不想讓路線等待,請不要從您的model掛鉤返回承諾(使用then方法)。返回一個常規對象,一個已經加載的對象或一個代理。然後,例如,在您的setupController掛鉤中稍後加載模型。

    +0

    謝謝!如果我理解正確,改變'FixtureAdapter'的延遲會影響所有路線。我有興趣在逐個路由的基礎上調整它,所以對我來說不起作用。你建議的第二種方法看起來更有希望。你能提供一些示例代碼嗎? – dangonfast