Opa:在迭代过程中将变量传递给事件处理程序



对于Opa Folks来说,上周末我一直对这个问题感到困惑。

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

我该怎么做?

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

<tr onclick={ otherExposedFunctionIWantToCall(team) }> 

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

我最近做的一件事是,尝试查看是否可以访问我在自定义类型team上设置的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客户端事件是否有任何方法可以访问事件的目标-似乎找不到任何方法?我有哪些实现目标的选择?

如果有人能帮我理解这个问题的任何部分,我将不胜感激!

我真傻,原来我完全忽略了团队变量完全在函数范围内(传递给迭代程序)这一事实。

事实证明,我没有将team_id(一个int字段)转换为字符串。。。

我发现这个工作:

<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的字符串转换仅在第一种情况下有效。

我想是下一个吧!

相关内容

  • 没有找到相关文章

最新更新