0

对于那里的 Opa Folks,我在过去的整个周末都对这个问题感到困惑。

我试图在我的视图中做的是迭代我的模型数据调用返回的 DBSet,生成一个 XHTML 记录表,每个记录都绑定到一个单击事件处理程序。我希望此单击事件处理程序接受迭代记录类型的属性作为参数,或记录本身。type team = { string team_id, ...etc} 我的视图中有一个表单,我想用最近单击的表​​行的值填充输入,这就是事件处理程序所做的——如果我什至可以将正确的参数传递给它。

我该怎么做?

我正在尝试获取一些 XHTML 来绑定这样的事件处理程序

<tr onclick={ otherExposedFunctionIWantToCall(team) }> 

或者

<tr onclick={ otherExposedFunctionIWantToCall(team.team_id) }>

我采取的最新措施之一是尝试查看是否可以访问我在自定义类型 team.id 上设置的 team_id 属性。

function teams_management_view(){
    tbody = Iter.fold(
          function(team, acc){
            <>{acc}<tr onclick={ function(_){ Log.info("click", {team.team_id})}}><td class="team_id">{team.team_id}</td><td class="team_name">{team.name}</td></tr></>
          },
          TeamModel.get_teams(),
          <></>
        )
  ...
}

当我在迭代代码中使用这些事件处理程序的这些形式时,它们都无法编译。

为什么这不起作用?我用动态记录迭代的问题是什么?我什至可以将这样的功能绑定到事件吗?
Opa 客户端事件是否有任何方法可以访问事件的目标 - 似乎没有找到任何方法?为了实现我的目标,我有哪些选择?

如果有人可以帮助我理解这个问题的任何部分,我将非常感激!

4

1 回答 1

0

愚蠢的我,事实证明我完全忽略了团队变量完全在函数范围内(即传递给迭代器)这一事实。

原来我没有将作为一个int字段的team_id转换为字符串......

我发现这有效:

<tr onclick={ function(_){ setTeamView("{team.team_id}")} }>

鉴于,这一直给我以前的错误,

Expression has type
    void
    but is coerced into
    FunAction.t

<tr onclick={ setTeamView("{team.team_id}")}>

您的自定义函数最好首先包装在一个匿名包装函数中,正如我给出的第一个示例所示。team.team_id 的字符串转换仅在第一种情况下有效。

我猜到下一个!

于 2012-10-10T01:13:41.053 回答