2013-06-27 3 views
2

Так что я хочу сделать что-то вроде: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 ] ] ] ] 

То, что я хотел бы, чтобы это сделать, это создать список сотрудников, с радио-кнопок в каждой строке. Затем, в зависимости от выбранного переключателя и нажатия кнопки, мы выполняем некоторые действия.

Так визуальное представление о том, что я хочу что-то вроде:


| Сообщение Timecard | История расписания | --- | Печать Paycheck | --- | Удалить |

  • Сотрудник 1 ..... данные .... данные .... данные
  • сотрудников 2 ..... данные .... данные .... данные
  • Сотрудник 3 ..... данные .... данные .... данные
  • Employee 4 ..... данные .... данные .... данные
  • Employee 5 ..... данные .. .. данные .... данные

S o они могли бы, например, выбрать Employee 3, а затем нажать | Удалить | - это приведет к удалению для Employee 3.

Я думаю, что я могу обработать, что делать для части кода selected:, но я понятия не имею, как обращаться с обратным вызовом? Есть ли способ динамически выбирать, что звонить?

ответ

4

Поскольку вы используете радиогруппу в любом случае, вы сможете выбрать только одну запись из списка сотрудников. Теперь, если вы используете 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.