所以我有這個應用程序與一個頁面,其中包含一個可以過濾的列表。查詢參數刪除和refreshModel
列表背後的數據可能非常大,因此通過發送與JSONAPI參考(例如?filter[name]=John&filter[date]=2016-09-12|2016-09-15
)中的參數非常相似的過濾器參數在服務器端完成過濾。
爲了做到這一點,我已經建立了我的路線如下:
export default Ember.Route.extend(AuthenticatedRoute, {
queryParams: {
'filter[name]': {
refreshModel: true
},
[...]
},
model(params) {
return this.store.query('receipt', params);
}
});
這使得路線的查詢參數複製到API調用沒有任何問題。
現在,當然,用戶必須能夠過濾器從他的界面更改,對不對?所以我做了一點點引導模式/形態,並在我的控制器的作用,它建立了一套查詢參數,並與他們重新加載路線迷上它:
changeFilters() {
var params = {};
if (this.get('nameFilter')) {
params['filter[name]'] = this.get('nameFilter');
}
[...]
this.transitionToRoute({queryParams: params});
}
這樣做實際上沒有很好地工作。當在查詢中添加或更改filter[name]
參數時,路由將刷新並更新模型。但是,用戶禁用過濾器時會出現問題:即使refreshModel
設置爲true,移除查詢參數似乎也不會刷新路由。
所以,我非常確定這是一個錯誤,因爲它對我沒有任何意義,但是在此期間我對Ember很新,所以我想我會在提交錯誤報告之前尋求幫助。
那麼有什麼我失蹤?或者是這種設計/某種設計限制?
謝謝!
只是想,而不是僅僅去除其設置爲默認值空'「」',將重新加載就是我怎麼做我queryParams。 – kumkanillam
哦,是的,這就是我在此期間所做的,參數不會被刪除,'refreshModel'觸發刷新,但這不是最佳的。目前這不是什麼大問題(除了它生成的醜陋URL),但是空字符串與undefined/null字符串並不是一回事,我可以看到它在某些字段上成爲問題。例如,對於增值稅號碼,我想'過濾[增值稅] ='只過濾沒有(空白)增值稅號碼的收據,但我仍然希望能夠完全禁用過濾。 – blue
@blue此問題:https://github.com/emberjs/ember.js/issues/10577可能有幫助嗎?查詢參數非常棘手;我不確定這是否是一個錯誤。作爲一種解決方法,您可以嘗試從您的控制器發送操作以觸發您的路由中的刷新操作:http://emberjs.com/api/classes/Ember.Route.html#method_refresh –