2014-02-12 42 views
1

我使用dojo.form.FilteringSelect作爲類似google的提示器。基於輸入的字符串,我通過AJAX獲取一系列值並將它們放入小部件的商店中。此過程在每個keyUp後啓動。我遇到的問題是,下拉列表會自動打開,嘗試在其AJAX響應到達之前在其存儲中找到(由舊值填充)字符串類型。我想要禁用這種行爲,並在獲得結果後自行致電openDropDown()。有沒有這樣做的優雅方式?就像:Dojo FilteringSelect - 防止自動打開下拉菜單

var fs = new dojo.form.FilteringSelect({ 
    automaticDropDown: false // I am looking for a property like this one 
}); 

回答

1

我真的不認爲有一種方法可以輕鬆地做到這一點。你所做的(據我所知)是你綁定一個keyUp事件處理程序並手動修改該存儲。

要做的最好的事情是您創建自己的商店(或者使用dojo/store/JsonRest也許)並覆蓋query()函數。該功能實際上負責爲您提供與查詢匹配的數據的子集。如果您想更改執行該查詢時從商店返回的數據,則應該在那裏修改它。

這種方法的好處是您不需要定義自己的事件處理程序,並開始從外部自己過濾商店,因爲這已經以其他方式實現。下拉菜單隻有在執行query()函數後才能打開,因此您的執行順序沒有問題。

+0

嗯,也許'dojox.data.JsonRestStore'更適合這個。但是,在dojo源代碼遊覽超過一週之後,我得出結論,使用'ValidationTextBox'並且將這些建議者全部寫入我自己的代碼將會容易得多,這就是我所做的。感謝您的幫助。 –

相關問題