2013-12-02 2 views
0

У меня солидный фон на Java, и довольно много раз в прошлом году с ExtJS я столкнулся с новым вызовом с Dojo. Дело в том, что я до сих пор не понимаю, почему в API существует столько непоследовательности.Почему у dijit.form.Select есть метод setStore(), а dijit.form.FilteringSelect нет?

Почему этот метод не доступен для dijit.form.FilteringSelect:

setStore(store, selectedValue, fetchArgs) 

, а это для dijit.form.Select?

См:

http://dojotoolkit.org/api/?qs=1.9/dijit/form/Select#1_9dijit_form_Select_setStore http://dojotoolkit.org/api/?qs=1.9/dijit/form/FilteringSelect

ответ

1

библиотеки Dojo есть "эволюционировали" в течение долгого времени. Поскольку Dojo является открытым исходным кодом, он был внесен многими людьми так же, как вы и я. Не все придерживались тех же конвенций и стандартов в начале. Усилия по «польский» Dojo продолжают и в будущих выпусках, будет больше согласованности.

Рассматривая этот конкретный пример, мы видим, что цель состоит в том, чтобы установить свойство «store» виджетов. Я считаю, что правильный способ выполнения этой задачи является:

var myWidget = new MyWidget({ store: myStore }); 

, который будет использоваться во время строительства виджета либо установить его позже с помощью:

myWidget.set("store", myStore); 

который является общим способом установить какое-либо имущество в виджетах.

Оба вышеуказанных метода должны работать как можно лучше для выбора и фильтрации. Тот факт, что один из виджета имеет дополнительный «нестандартный» механизм сеттера, скорее всего, возник из истории, когда разработчик явно добавил эту опцию. Когда стандартизация пришла, метод мог быть удален, но существует опасность того, что любые ранее существовавшие приложения перестанут работать, и это будет считаться хуже. Поэтому мы должны действительно рассматривать нестандартный вариант как устаревший. Я бы надеялся, что это было документировано как устаревшее в ссылке API (но не было).

+0

Дело в том, что метод 'setStore' на' dijit.form.Select' делает больше, чем просто устанавливает хранилище; он устанавливает выбранное значение, а также аргументы выборки. Какая помощь делает только один вызов вместо трех. – maxxyme

Смежные вопросы