PLAY Framework相当新,并且由于我的工作限制,我们使用1.2.5版本,而现在直到使用从HTML到Controller的常规流程通过表单提交来完成我的所有流程。我想从JavaScript函数调用Application.Action。
虽然我有一个输入信息的表单,但可以点击另一个非提交按钮进入单独的页面以获取额外信息。我想通过“onClick”调用JavaScript函数,并在JavaScript函数内部调用“@Application.Action(some param ...)”。
我需要在调用操作之前获取特定输入字段中的内容。
我尝试用PLAY“弹出窗口”来做到这一点,但这似乎不起作用,因为我无法传递参数。
所以这是我的代码片段:
在HTML文件中(扩展main.html,其中包含所有javascript文件“include”)
<form>....
some input fields here
submit button here
</form>
<button onclick="myFunction()" data-role="button" style="width: 5em">Click here</button>
在main.html中包含的JavaScript文件中我有类似的内容
function myFunction() {
var inputField1 = document.getElementById('inputField1').value;
var inputField2 = document.getElementById('inputField2').value;
var inputField3 = document.getElementById('inputField3').value;
window.location = "@{Application.moreInfo(inputField1, inputField2, inputField3)}";
}
当然不起作用
有没有办法像这样做?
我是否必须为此创建路线?
我可以通过替换
来到达单独的页面window.location = "@{Application.moreInfo(inputField1, inputField2, inputField3)}";
带
window.location.href='/goThere';
只要我有路线
/goThere Application.goThere
但是我无法找到传递参数的方法,我试图像
那样设置路线/goThere/{inputField1}{inputField2}{inputField3} Application.goThere(inputField1...)
但我想我也没有正确的语法。
有没有办法调用Application.Action并从JavaScript函数传递参数/字段。
感谢任何帮助
答案 0 :(得分:0)
内置的#{jsAction /}
模板标记完全符合您的要求。
示例:
假设您有路线
GET /moreinfo/{foo}/{bar} Application.moreInfo
您可以使用jsAction
的结果来获取包含所需参数的正确网址:
var fieldOne = "I'm a Javascript variable";
var fieldTwo = "Really? Me too";
var moreInfoAction = #{jsAction @Application.moreInfo(":foo", ":bar") /};
// and since it looks like you want to set the current location
// to your freshly obtained URL:
window.location.href = moreInfoAction({"foo": fieldOne, "bar": fieldTwo});