【问题标题】:Get Javascript variable in Template play framework 1.2.6模板播放框架 1.2.6 中获取 Javascript 变量
【发布时间】: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;。谢谢

【问题讨论】:

    标签: javascript playframework-1.x


    【解决方案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é" );
              //  });
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多