2

我的应用程序正在使用播放框架 mvc 设置。在控制器中,我在渲染模板时传递了一个参数,如下所示:

public static void scenario(){
     ...
     render(active_brands);  
}

现在在我的 HTML 页面“scenario.html”中,我可以使用播放框架标签访问参数,如下所示:

#{list items:active_brands, as:'c'}
...
#{\list}

或者在这样的 HTML 表中使用 JQuery:

<td>${active_brands.get(1)}</td>

仅供参考,传入的参数是一个List。

但是,我正在尝试从 javascript 函数访问参数“active_brands”,但我不知道该怎么做。我认为使用 Jquery 访问变量会起作用,我尝试像这样访问变量:

function update_brands(active_scenario_ids){
    ...
    alert('Reached: '+ ${active_brands});
}

但这不起作用。在我看来,HTML 属性超出了 javascript 函数的范围。真的吗?如果有人可以帮助我,那就太好了。谢谢。

4

2 回答 2

1

这适用于我使用 Play 2.2.0:

Application.scala(控制器):

  def index = Action { implicit request =>

   val message = "This is a test."

   Ok(views.html.test(message))

  }

test.scala.html(查看模板):

@(message: String)

<script type="text/javascript">
$(document).ready(function(){

console.log("@message");

});

</script>

控制台输出:

这是一个测验。

于 2013-09-29T05:06:39.577 回答
0

问题的根源在于,我的模板变量(可在客户端 HTML 中访问)是 java.util.List 类型,客户端代码无法访问,即。javascript。但是,它在播放标签中被识别,因为播放标签是在客户端编写的服务器端代码。因此,我能找到的用于读取 Java 集合中的对象的唯一解决方案是返回一个 JSON 对象。

因此,我不得不更改我的代码,而不是将 Java 列表作为模板变量返回,而是通过 ajax 调用将数据检索为 JSON 对象。

$.ajax({
            url: '/getBrands/',
            type: 'POST',
            data: {active_scenario_ids: active_scenario_ids},
            dataType: "json",

            success: function(data){
                console.log(data);
            },
            error: function(req, status, error){
                alert("R:"+req+"S:"+status+"E:"+error);
            }
        });
    }
于 2013-09-30T16:09:57.293 回答