我有一個從服務器獲取數據默認列表的頁面,此頁面還有一個搜索框,它在運行時更新查詢參數並將新的數據列表返回到同一頁面。這工作正常。如何強制從服務器重新加載?
然而,當我清除搜索(無論是通過一個動作,或按「後退」在瀏覽器中),我想從服務器的缺省數據新鮮,更換任何搜索結果。
我想我有這個方法,因爲清除查詢參數確實會導致findAll()
再次向服務器請求數據,並且還會返回正確的數據,但商店會保留先前檢索到的所有記錄從搜索,所以現在用戶看到這兩個默認設置加他們得到了來自搜索後面的記錄。
那麼,如何強制灰燼數據使用哪種從API回來並覆蓋不管它曾在商店嗎?
這裏是我的路線代碼。儘管有reload: true
和refreshModel: true
,似乎既不是實際發生的事情:
model: function(params) {
if (params.q) {
return this.store.find('project', params);
} else {
return this.store.findAll('project', {reload: true});
}
},
queryParams: {
q: {
refreshModel: true
}
},
提前感謝!
更新: 我注意到生產環境沒有這個問題。而在開發或運行ember serve --environment=development
當數據不被清除出去,如果我在findAll()
之前使用this.store.unloadAll('project')
,似乎將其清除出去,但後來給了我一個錯誤「在銷燬的對象調用集」。但如果我做ember serve --environment=production
我沒有得到任何錯誤。我不知道爲什麼會出現這種情況,但這並不是我第一次在開發中遇到麻煩,只是發現生產運行良好。
謝謝你,你會這樣想,但我已經嘗試過了,如果我把這一行放入,那麼在導航回到這個路由時,它會給我一個錯誤:'處理路由時出錯:項目斷言失敗:在被銷燬的對象上調用集合 – redOctober13
Is there我可以從模型鉤子中明確設置模型的方法?我不知道爲什麼那會比從findAll()返回承諾有所不同,但是我在這裏變得絕望。 – redOctober13