gpt4 book ai didi

javascript - PlayFramework HTML,可变为 Javascript?

转载 作者:数据小太阳 更新时间:2023-10-29 03:50:36 25 4
gpt4 key购买 nike

想象一个简单的 Play Action 定义为

def reactTest = Action {
request => Ok(views.html.hello("JOHN"))
}

hello.scala.html看起来像这样,使用一个基本的 React.js 示例:

@(name: String)

....

<div id="example"></div>
<script type="text/jsx">
React.render(
<h1>Hello, @name!</h1>, <---- NAME PARAMETER USED HERE
document.getElementById('example')
);
</script>

这工作正常,结果将是“你好,约翰!”页。现在,我知道 Scala 代码在服务器上执行,JS 代码在客户端执行,但我想知道是否有办法通过 @name相同的 javascript (jsx) 代码的参数,如果此类代码位于单独的 .js 文件中,则 <div>看起来像:

<div id="example"></div>
<script type="text/jsx" src="@routes.Assets.at("javascripts/hello.js"></script>

有没有办法通过 @name hello.js 中脚本的参数?

最佳答案

您可以在全局 JS 变量中保存任何您想要的内容,然后在需要时访问它。

例如,假设您想在脚本中使用用户对象。有了这个html模板

@(user: User)

<html>
<body>
<script>
var MyUserObject = {};
MyUserObject["name"] = "@user.name";
MyUserObject["age"] = @user.age;
</script>
<!-- ... -->
<script src="your_component.js"></script>
</body>

然后在你包含的 js 中你可以做这样的事情:

(function(user) {
alert("Hello " + user.name + ". You are " + user.age + " years old");
})(MyUserObject);

然后您可以使用您要使用的值的映射来改进它,或者将您的对象呈现为 JSON 并在 JS 端解析它:

def reactTest = Action {
request => Ok(views.html.hello(Json.toJson(user)))
}

// and then

@(user: String)

<html>
<body>
<script>
var MyUserObject = JSON.parse("@user");
</script>
<!-- ... -->
<script src="your_component.js"></script>
</body>

不完美,但比在 JS 文件 IMO 上渲染要好。

关于javascript - PlayFramework HTML,可变为 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30693562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com