-2

PLAY 框架相当新,由于我的工作限制,我们使用的是 1.2.5 版本,而到目前为止,我能够使用从 HTML 到 Controller 的常规流程通过表单提交来完成我的所有流程。我想从 JavaScript 函数调用 Application.Action。

虽然我有一个输入信息的表单,但可以单击另一个非提交按钮进入单独的页面以获取额外信息。我想通过“onClick”调用 JavaScript 函数,并在 JavaScript 函数内部调用“@Application.Action(some param...)”。

在调用操作之前,我需要获取特定输入字段中的内容。

我尝试使用 PLAY“弹出窗口”来做到这一点,但这似乎不起作用,因为我无法传递参数。

所以这是我的片段:

在 HTML 文件中(扩展拥有所有 javascript 文件“包含”的 main.html)

 <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 函数传递参数/字段。

任何帮助表示赞赏

4

1 回答 1

0

内置的#{jsAction /}模板标签正是您想要的。

例子:

假设你有一条路线

GET     /moreinfo/{foo}/{bar}        Application.moreInfo

您可以使用 的结果jsAction获取带有所需参数的正确 URL:

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});
于 2013-06-06T13:43:21.707 回答