对于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的字符串转换仅在第一种情况下有效。
我想是下一个吧!