Как заставить работать функции диалога
Я хочу открыть диалог и работать с данными после того, как диалог вернется в порядке. Проблема в том, что:success-fn не вызывается после отправки диалога. Это как-то связано со слушателем с кнопки. Если connectDialog вызывается без прослушивателя, вызывается функция:success-fn.
Код:
(def dbConnectionForm
(grid-panel :columns 2
:items ["Database Driver" (combobox :id :dbdriver :model ["postgresql" "mysql"])
"Database" (text :id :dbname :text "postgres")
"Port" (text :id :dbport :text "32768")
"Username" (text :id :username :text "postgres")
"Password" (text :id :password :text "postgres")]))
(defn connectionDialog []
(print (-> (dialog
:content dbConnectionForm
:option-type :ok-cancel
:type :plain
:success-fn (fn [e] (print (value dbConnectionForm)))
)pack! show!))
)
(def connectButton (button :text "Connect"
:listen [:action (fn [e] (connectionDialog))]))
1 ответ
Решение
Это, вероятно, потому что вы используете print
, Измените это на println
или добавить вызов flush
внутри обратного вызова после print
,
Если (value dbConnectionForm)
возвращает небольшое значение (как в чем-то, что при превращении в строку имеет только несколько символов) и не содержит символов новой строки, оно может не побудить аутстрим автоматически сбрасываться, поэтому текст застревает в буфере.