Smalltalk / Seaside-более элегантный способ использования переключателей?
Поэтому я хочу сделать что-то вроде:
html unorderedList: [
group := html radioGroup.
self employeeNames do: [ :eachEmp |
html listItem: [
group radioButton
selected: <set tmpVar = empKey>
callback: [ self <dependent on button pushed> ].
html text: eachEmp ] ] ] ]
Что я хотел бы сделать, так это создать список сотрудников с переключателями на каждой строке. Затем, в зависимости от выбранного переключателя и нажатой кнопки, мы выполняем некоторые действия.
Таким образом, визуальное представление того, что я хочу, выглядит примерно так:|Пост Табель| --- |История Расписания| --- |Напечатать Чек| --- |Удалить|
- сотрудник 1 ..... данные.... данные.... данные
- сотрудник 2 ..... данные.... данные.... данные
- сотрудник 3 ..... данные.... данные.... данные
- сотрудник 4 ..... данные.... данные.... данные
- сотрудник 5 ..... данные.... данные.... данные
Таким образом, они могли бы, например, выбрать сотрудника 3, а затем нажать |Delete| - это вызовет удаление для сотрудника 3.
Я думаю, что могу справиться с тем, что нужно сделать для selected:
части моего кода, но я понятия не имею, как справиться с обратным вызовом? Есть ли способ динамически выбирать, что именно позвонить?
1 ответ:
Поскольку вы все равно используете группу Радио, вы сможете выбрать только одну запись из списка сотрудников. Теперь, если вы используете элемент
form
для обертывания элементов управления, ваши якоря действий могут просто вызвать отправку формы:formName := 'employee-form'. html form name: formName; with: [ html unorderedList: [ group := html radioGroup. self employeeNames do: [ :eachEmp | html listItem: [ group radioButton selected: nil "<set tmpVar = empKey>"; callback: [ :value | self "<dependent on button pushed>" ]; with: eachEmp ] ] ] ]. html anchor submitFormNamed: formName; callback: [ :value | self handleDelete ] with: 'delete'
Обратный вызов якоря будет вычислен после всех обратных вызовов элементов формы.
Примечание сбоку: обратите внимание на использование
with:
для установки текста якоря и переключателя. Вы должны почти всегда использоватьwith:
в качестве последнего сообщение дляhtml
.