模板播放框架 1.2.6 中获取 Javascript 变量

Posted

技术标签:

【中文标题】模板播放框架 1.2.6 中获取 Javascript 变量【英文标题】:Get Javascript variable in Template play framework 1.2.6 【发布时间】:2014-01-03 23:27:43 【问题描述】:

我需要在我的模板中获取一个 javascript 变量(播放框架 1.2.6):

#extends 'main.html' /
#set title:'My Resa V.1' /
<div id="content">

<div id="draggable" class="ui-widget-content">
    <p>Drag me around</p>
</div>
<div id="circle"> <center>table 1</center></div>
</div>

<script>
    $(function() 
        $( "#draggable" ).draggable();
        $( "#circle" ).draggable(
                    stop: function(event, ui) 
                    var circle = $(this).position();
                  var position= circle.top;
                
            );
    );
    </script>

我想得到 var position= circle.top;。谢谢

【问题讨论】:

【参考方案1】:

您的问题的主要原因是播放模板引擎是在服务器端执行的,而 javascript 代码是在客户端执行的(即进入网络浏览器)。

因此,如果您想从服务器状态(来自 java)添加变量,您应该在服务器端“编写”(注入)您的 javascript 代码,这样当页面加载到客户端时它就会出现,因此可以在那里执行。

为此,首先您需要使用以下代码将您的 circle 变量从控制器发送到视图:

Circle circle=getYourCircle();
render("path/to/your/view",circle);

接下来,在您的视图文件中,只需替换初始化位置的行:

var position= $circle.top;

同样,$ 表达式将在服务器上进行计算,其值将写入将返回给客户端的响应正文中。因此,在这种情况下,如果您的圆的 top 属性值等于 40,浏览器将获得:

var position= 40;

对应的行。

反过来(即读取模板中的 javascript 变量)是不可能的,除非您向服务器发出请求(例如通过使用一些 jQuery.ajax 变体),并发送javascript 变量。

请求应该被控制器接受,并且变量的值应该委托给视图(与第一个代码 sn-p 中的过程相同)。即使这样,播放模板引擎也将能够访问“javascript”变量(现在是请求范围变量)并对其进行额外的转换。

我希望这会有所帮助:)

【讨论】:

【参考方案2】:

谢谢!我终于用上了Ajax机制:

...
var allPosition='';
                for (var m in map)
                allPosition+= m +'-' + map[m].top + '-' + map[m].left+'/';
                
 var updateUserRoute = #jsRoute @Application.saveDisposition() /
...

函数调用Ajax(updateUserRoute,allPosition)

            $.ajax(
             url: updateUserRoute.url(),
             type: updateUserRoute.method,
             data: positionTables: allPosition
            );

            //.done(function( msg ) 
         // alert( "disposition des tables sauvegardé" );
        //  );
    

【讨论】:

以上是关于模板播放框架 1.2.6 中获取 Javascript 变量的主要内容,如果未能解决你的问题,请参考以下文章

播放框架“设置”模板标签在文件之间不起作用

播放框架 1.x 上的电子邮件模板国际化/本地化

使用播放框架的移动应用程序的不同视图

我需要在生产模式下运行预编译吗?还是为我做的(播放框架 1.2.6)

如何在播放框架模板的 html 标记中包含一段 java 代码?

.wav 音频文件无法播放 - Javascript