我使用的是Scala-Play 2.5.10,Play-Bootstrap和AngularJS 1.x,我需要从AngularJS处理一个表单提交。然后我尝试了:
@b3.submit('class -> "btn btn-danger",
'ng-click -> "runInSampleSimulation()") {
<span class="glyphicon glyphicon-cog"></span> Run Simulation
}
但ng-click
未被识别。我希望它可以简单地作为键值对传递到Map中,即<button type="@buttonType" @toHtmlArgs(innerArgsMap)>@text</button>
see here。
所以我只能选择回退计划HTML,如下所示:
<button type="submit" class="btn btn-danger" ng-click="runInSampleSimulation()">
<span class="glyphicon glyphicon-cog"></span> Run Simulation
</button>
有没有办法将ng-click
挂钩到b3?
答案 0 :(得分:0)
我决定通过更改form
代替submit
按钮并使用ng-submit
来实现此目的。
显然没有开箱即用的解决方案。虽然我希望的是符号通过,但由于某种原因,破折号-
是模板的非法符号。因此,这会产生错误:
@b3.form(routes.Simulation.computeInSample, 'ng-submit -> "runInSampleSimulation()") {
因此,我将form template修改为自定义b3/ngform.scala.html
,如下所示:
@(action: Call, args: (Symbol, Any)*)(body: => Html)(implicit fc: b3.B3FieldConstructor)
<form method="@action.method" ng-submit="@bs.Args.get(args, 'ngsubmit)('@action.toString')"
class="@fc.formClass @bs.Args.get(args, 'class)"
@toHtmlArgs(bs.Args.remove(bs.Args.remove(bs.Args.inner(args, 'role -> "form"), 'ngsubmit), 'class).toMap)>
@body
</form>
我可以这样使用:
@b3.ngform(routes.Simulation.computeInSample, 'ngsubmit -> "runInSampleSimulation") {
并准确生成我想要的内容:
<form class="form-horizontal ng-pristine ng-valid"
role="form" method="GET" ng-submit="runInSampleSimulation('/simulation/in/')">