2016-07-26 11 views
0

Ich versuche, eine Funktion in eine EJS-Vorlage zu übergeben und in der Vorlage auf ein onclick-Ereignis zu setzen. Ist das möglich?Übergeben einer Funktion in eine EJS-Vorlage für die Verwendung in einem onclick-Ereignis?

Mit anderen Worten, so etwas wie dieses

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); 

Wo die Vorlage so etwas wie

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

Sieht aus wie man so etwas erreichen kann. Versuchen Sie [diese] (http://stackoverflow.com/a/30539675/4875631) Lösung. – FrankerZ

+0

Danke für die Antwort. Das Problem besteht eher darin, die Syntax für den onclick = "funcName" richtig zu machen; Ich kann onclick = "<% clickHandler%>, aber das macht nichts beim Klicken. Ich kann auch onclick =" <% clickHandler()%> aber das führt die Funktion aus, sobald sie geparst wird – user3412416

Antwort

1
  • Sie sollten anstelle von Server-Datei in EJS-Datei setzen Sie Ihre js Funktion aussieht.
  • übergeben Sie den Funktionsnamen stattdessen einen ganzen Funktionscode.

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

Interessant, das hat den Trick gemacht! Danke ich schätze das. – user3412416