Smalltalk / Seaside - 使用单选按钮的更优雅方式?

时间:2013-06-27 01:18:47

标签: 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 ......数据......数据......数据

所以他们可以选择Employee 3然后按| Delete | - 这会触发员工3的删除。

我想我可以处理我的代码selected:部分的操作,但我不知道如何处理回调?有没有办法动态选择要调用的内容?

1 个答案:

答案 0 :(得分: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的最后一条消息。