2016-07-26 152 views
0

我想将一个函数传递给EJS模板,并将它设置为模板中的onclick事件。这可能吗?将函数传递给EJS模板以用于onclick事件?

换句话说,这样的事情

var clickHandler = function() { console.log("I am in the click handler!"); } 
var template = new EJS({ url: "/template.ejs" }); 
var html = template.render({ clickHandler: clickHandler }) 
$("#target").html(html); 

当模板看起来像

<p onclick='clickHandler'>Click Me</p> 
+0

貌似可以达到这个目的。试试[this](http://stackoverflow.com/a/30539675/4875631)解决方案。 – FrankerZ

+0

感谢您的回复。问题更多的是为onclick =“funcName”获取语法权限;我可以做onclick =“<%clickHandler%>,但是这不会对click做任何事情,我也可以做onclick =”<%clickHandler()%>,但它在解析后立即执行函数 – user3412416

回答

1
  • 你应该把在EJS你的js函数文件,而不是服务器上的文件。
  • 传递functoin名称代替整个功能代码。

app.js

var html = template.render({ clickHandler:"func1();" }) 

EJS

<p onclick='<%= clickHandler %>'>Click Me</p> 

<script> 
    function func1(){ 
    console.log("I am in the click handler 1!"); 
    } 
    function func2(){ 
    console.log("I am in the click handler 2!"); 
    } 
</script> 
+0

有趣的是,诀窍!谢谢,我很感激。 – user3412416