2016-07-26 206 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