Кнопка для очистки datefield
Здравствуйте.
Понадобилась мне дополнительная кнопка в datepicker`е для очистки филда. Нашел на гитхабе вот это: https://gist.github.com/xiexiao/00cecaf3c26deaa96812 . Ну и столкнулся с той же проблемой что там в коменте написана: при нажатии на кнопку хендлер не срабатывает, просто закрывается пикер. А кнопка Today работает нормально. В чем может быть проблема? |
Разобрался. Надо было кнопке владельца еще назначить: "ownerCt: dt1.picker".
|
А что за опция ownerCt?
|
|
khusamov
https://docs.sencha.com/extjs/5.1/5....operty-ownerCt Это пропертя, а не опция. Приходится использовать такой вот трюк, иначе не пашет. kolka А ваше расширение красиво выглядит, возьму на заметку. Спасибо! |
Но это свойство только для чтения же!
ownerCt : Ext.Container READONLY http://docs.sencha.com/extjs/6.0/6.0...operty-ownerCt |
@Infarch, @kolka,
Использовать triggers это официально правильное решение. Хотя вот посмотрел в код и сразу заметил баг: обработчик mousedown проверяет фокусированность поля не совсем правильно. :( Сейчас открою тикет... |
khusamov, а вот не совсем! Посмотрите на код этого метода: http://docs.sencha.com/extjs/5.1/5.1...d-beforeRender . Там при создании todayBtn передается ссылка на пикер в эту пропертю. Собственно, так я и нашел как делу помочь, сам бы ни в жизнь не догадался.
|
Вы про этот код?
me.todayBtn = new Ext.button.Button({ ownerCt: me, Так этого конфига в документации нет. Так что официально этим пользоваться по идее нельзя вообще. К тому же если это конфиг, то по идее он должен обновляться через метод setOwnerCt(), если таковой вообще существует. Разработчики extjs в своем коде часто отступают от своих же принципов. К примеру в коде Ext.ux.ajax.* вообще кромешный ад, там даже документация из-за "неправильно написанного" кода неполная. |
А покажите мне разработчика который всегда блюдет принципы... Это как сферический конь в вакууме. Идеал то бишь, к которому можно только стремиться.
|
Я не об этом. В sencha extjs есть описание как создавать классы - классовая система. Часть классов написана в соответствии с этим описанием, а часть написана как попало. Сами разработчики в этом признаются, но уже нет времени переписывать. Вот потому такие проблемы и возникают.
Так что как пользоваться этим ownerCt: me не понятно. Внутри кода они используют его. А в документации запрет. |
Поправка: часть объектов, обычно самых низкоуровневых, не является классами по причинам, не связанным с "как попало". Классовая система это замечательно с точки зрения разработчика приложений, но у неё есть изрядная себестоимость в плане производительности. Поэтому некоторые вещи лучше делать в "голом" JavaScript.
Что касается ownerCt, то это свойство устанавливается на компоненте, когда он добавляется в контейнер. Свойство это используется много где и влияет много на что, поэтому манипулировать им вручную не рекомендуется, если вы не понимаете до конца, что именно делаете. Если понимаете, то кто ж вам запретит. :) |
nohuhu, а что остается? Сама кнопка "Тудей" так добавляется ). Я думал через метод add. Получил ошибку - нет такого метода. Пришлось...
|
Я уже сказал выше: используйте конфигурацию triggers, она именно для таких вещей и предназначена. Если есть публичное API, зачем лезть в дебри?
|
Увы, клиент захотел именно кнопку и именно рядом с Today. Пришлось.
|
Цитата:
|
Оплата почасовая ) Исследую и релизую любой каприз, не спеша и качественно!
|
Часовой пояс GMT +3, время: 02:29. |