Button 单击按钮后如何使用Lift调用javascript函数?

Button 单击按钮后如何使用Lift调用javascript函数?,button,lift,google-visualization,Button,Lift,Google Visualization,以下是我的HTML代码: 函数绘图图(){ var data=new google.visualization.DataTable(); data.addColumn('string','Year'); data.addColumn('number','D1'); data.addColumn('number','D2'); 数据。添加行(2); 设置值(0,0,'1900'); 设置值(1,0,'1910'); 数据。设定值(0,1,1); 数据。设定值(1,1,2); 数据。设定值(0,2

以下是我的HTML代码:


函数绘图图(){
var data=new google.visualization.DataTable();
data.addColumn('string','Year');
data.addColumn('number','D1');
data.addColumn('number','D2');
数据。添加行(2);
设置值(0,0,'1900');
设置值(1,0,'1910');
数据。设定值(0,1,1);
数据。设定值(1,1,2);
数据。设定值(0,2,3);
数据。设定值(1,2,1);
var options={title:'树形图',
hAxis:{title:'Time',titleTextStyle:{color:'red'}},
点大小:5};
var chart=new google.visualization.LineChart(document.getElementById('chart_div'));
图表绘制(数据、选项);
}
函数showChart(){
load(“可视化”、“1”、{packages:[“corechart”]});
setOnLoadCallback(drawChart);
}
获取图表
showChart()
函数在
chart\u div

这是我的电梯代码:

对象DChart{
def呈现={
def process():JsCmd=Run(“showChart();”)
“#获取图表”#>SHtml.按钮(“获取图表”,流程)
}
}
单击按钮应执行
showChart()
功能。。遗憾的是,它不起作用


请帮助我了解如何从lift运行脚本函数

SHtml.button
将任何作为参数,因此任何JavaScript都不会返回到浏览器并执行

我会做两件事中的一件:

  • 改用
    SHtml.ajaxButton
    ,因为方法体需要
    JsCmd
    返回
  • 改为绑定事件,如:
    “#getChart[onclick]”“#>SHtml.onEvent((str)=>process())
  • 两者基本上做相同的事情,应该让代码正常工作。选项1将用一次提升渲染替换整个HTML按钮,选项2只将ajax添加到现有HTML按钮上的
    onclick
    事件中


    我假设您将要做一些更复杂的事情,并且实际上想要进行一个ajax调用-但是如果您只想添加
    showChart()
    callclientside,您可以简单地说:
    “#getChart[onclick]”“#>process()。toJsCmd
    SHtml.button
    作为参数
    ()=>任何
    ,因此任何JavaScript都不会返回到浏览器并执行

    我会做两件事中的一件:

  • 改用
    SHtml.ajaxButton
    ,因为方法体需要
    JsCmd
    返回
  • 改为绑定事件,如:
    “#getChart[onclick]”“#>SHtml.onEvent((str)=>process())
  • 两者基本上做相同的事情,应该让代码正常工作。选项1将用一次提升渲染替换整个HTML按钮,选项2只将ajax添加到现有HTML按钮上的
    onclick
    事件中


    我假设您将要做一些更复杂的事情,并且实际上想要进行一个ajax调用-但是如果您只想添加
    showChart()
    调用客户端,您可以简单地说:
    “#getChart[onclick]”“#>process()。toJsCmd

    我已经找出了问题所在。。我调用了方法
    showChart()
    ,但是这个方法使用了google函数
    setOnLoadCallback()
    ,因此只有在调用加载页面的方法时才能显示图表(据我所知)

    解决方案:只需调用
    drawChart()
    方法即可! 我用
    drawChart()
    方法尝试了从jcern发布的每个解决方案,所有这些都有效


    thx jcern:)

    我已经找出了问题所在。。我调用了方法
    showChart()
    ,但是这个方法使用了google函数
    setOnLoadCallback()
    ,因此只有在调用加载页面的方法时才能显示图表(据我所知)

    解决方案:只需调用
    drawChart()
    方法即可! 我用
    drawChart()
    方法尝试了从jcern发布的每个解决方案,所有这些都有效


    thx jcern:)

    如果将
    showChart()
    替换为
    alert(1)
    ,该怎么办?在本例中显示了什么?@Vasya:即使使用alert()方法,也不会显示任何内容。@jcern:thx用于您的ansewers,但是它还不起作用(全部3个示例)。。是的,你是对的,我正在做一些更复杂的事情,但是我被这个问题困住了,我不知道如何解决这个错误。我在前端开发方面是个新手(3周),所以对你们大多数人来说,这似乎是个愚蠢的问题。电梯的选择是项目强加的,所以我必须想出一个解决方案。无论如何,这很奇怪,当我在HTML中调用showChart()时,图表显示得很好,因此该方法确实有效,但当我尝试从lift运行脚本时,什么都不起作用。如果将
    showChart()
    替换为
    alert(1)
    ?在本例中显示了什么?@Vasya:即使使用alert()方法,也不会显示任何内容。@jcern:thx用于您的ansewers,但是它还不起作用(全部3个示例)。。是的,你是对的,我正在做一些更复杂的事情,但是我被这个问题困住了,我不知道如何解决这个错误。我在前端开发方面是个新手(3周),所以对你们大多数人来说,这似乎是个愚蠢的问题。电梯的选择是项目强加的,所以我必须想出一个解决方案。无论如何,这很奇怪,当我在HTML中调用showChart()时,图表显示得很好,因此该方法确实有效,但是当我尝试从lift运行脚本时,一切都不起作用。thx你说得对,但是要解决问题,只需使用drawChart()而不是showChart(),thx你说得对,但要解决问题,只需使用drawChart()而不是showChart()()