【问题标题】:Smalltalk / Seaside - A more elegant way to use radio buttons?Smalltalk / Seaside - 使用单选按钮的更优雅的方式?
【发布时间】:2013-06-27 01:18:47
【问题描述】:

所以我想做这样的事情:

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,然后按 |删除| - 这会触发员工 3 的删除。

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

【问题讨论】:

    标签: smalltalk seaside


    【解决方案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 的最后一条消息。

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多