Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Кнопка для очистки datefield (https://javascript.ru/forum/extjs/62972-knopka-dlya-ochistki-datefield.html)

Infarch 10.05.2016 16:23

Кнопка для очистки datefield
 
Здравствуйте.

Понадобилась мне дополнительная кнопка в datepicker`е для очистки филда. Нашел на гитхабе вот это: https://gist.github.com/xiexiao/00cecaf3c26deaa96812 . Ну и столкнулся с той же проблемой что там в коменте написана: при нажатии на кнопку хендлер не срабатывает, просто закрывается пикер. А кнопка Today работает нормально. В чем может быть проблема?

Infarch 11.05.2016 15:12

Разобрался. Надо было кнопке владельца еще назначить: "ownerCt: dt1.picker".

khusamov 11.05.2016 16:35

А что за опция ownerCt?

kolka 11.05.2016 17:04

А я это использую.
Пример.

Infarch 11.05.2016 18:30

khusamov
https://docs.sencha.com/extjs/5.1/5....operty-ownerCt
Это пропертя, а не опция. Приходится использовать такой вот трюк, иначе не пашет.
kolka
А ваше расширение красиво выглядит, возьму на заметку. Спасибо!

khusamov 11.05.2016 19:17

Но это свойство только для чтения же!

ownerCt : Ext.Container
READONLY

http://docs.sencha.com/extjs/6.0/6.0...operty-ownerCt

nohuhu 11.05.2016 20:37

@Infarch, @kolka,

Использовать triggers это официально правильное решение.

Хотя вот посмотрел в код и сразу заметил баг: обработчик mousedown проверяет фокусированность поля не совсем правильно. :( Сейчас открою тикет...

Infarch 11.05.2016 22:34

khusamov, а вот не совсем! Посмотрите на код этого метода: http://docs.sencha.com/extjs/5.1/5.1...d-beforeRender . Там при создании todayBtn передается ссылка на пикер в эту пропертю. Собственно, так я и нашел как делу помочь, сам бы ни в жизнь не догадался.

khusamov 11.05.2016 22:50

Вы про этот код?
me.todayBtn = new Ext.button.Button({
                ownerCt: me,

Так этого конфига в документации нет. Так что официально этим пользоваться по идее нельзя вообще.

К тому же если это конфиг, то по идее он должен обновляться через метод setOwnerCt(), если таковой вообще существует.

Разработчики extjs в своем коде часто отступают от своих же принципов. К примеру в коде Ext.ux.ajax.* вообще кромешный ад, там даже документация из-за "неправильно написанного" кода неполная.

Infarch 12.05.2016 09:51

А покажите мне разработчика который всегда блюдет принципы... Это как сферический конь в вакууме. Идеал то бишь, к которому можно только стремиться.


Часовой пояс GMT +3, время: 07:51.