今天同事遇到了一個比較奇怪的問題,使用layui中的table的模塊編寫完成之后,開始對條件查詢進行測試
條件中有一個選擇框,其中包括請選擇,已完結和未完結三個值
出現的問題:選擇已完結之后可以查詢到正確結果,然后選擇 ‘請選擇’選項時,查詢出的結果還是以完結的結果
選擇未完結之后可以查詢到正確結果,然后選擇 ‘請選擇’選項時,查詢出的結果還是未完結的結果
經過同事打斷點,我發現在選擇‘請選擇’的時候,請求的參數為空(空集合,沒有任何條件)
如下代碼所示
table.render({page: {curr: 1 //重新從第 1 頁開始
},where: {}});
以上代碼改成table.render({page: {curr: 1 //重新從第 1 頁開始
},where: {'end':''}});之后可以正常使用
可以的原因(猜想):每次調用where傳入參數后,先於上一次的查詢條件進行比較,如果對象屬性有相同的key,則將當前的值替換上一次條件的值,在執行本次的查詢,如果上一次查詢的對象屬性中的key在本次的條件查詢的where中沒有的話,使用上一次的對象屬性中的值從而產生緩存的效果,而這種緩存可能造成查詢的錯誤