Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing passed EJS variable in Javascript file

RESTful routes js file:

// index route - show all todos
router.get("/", middleware.isLoggedIn,function(req,res) {
  Todo.find({ "author.id" : req.user._id}, function(err, allTodos) {
    if(err) {
      console.log(err);
    } else {
      res.render("todo/index", {todos: allTodos});
    }
  });        
});

My index.ejs file has:

<script src="/scripts/todoCalendar.js"></script>

at the end of the body tag and I want to access the passed variable todos inside my todoCalendar.js file. I tried putting

<script>
  var x= <%= todos %>
</script>

but it says x is undefined when i try to do a console.log(x) inside my todoCalendar.js file.

Any help is greatly appreciated.

like image 783
Rumba Avatar asked Oct 03 '17 07:10

Rumba


People also ask

Can we use EJS variable in JavaScript?

EJS is a simple templating language that lets you generate HTML markup with plain JavaScript. It is possible to access JS variable in . ejs file. You just need to pass the JS object as second parameter of res.

Can a JS script get a variable written in a EJS context page within the same file?

Yes, you cant: if it is on server.


1 Answers

Three way to solve the problem...

  1. variant

    <script>
        var x = "<%= todos %>";
        console.log(x); 
    </script>
    
  2. variant

    <script>
        var x = "<%- todos %>";
        console.log(x); 
    </script>
    
  3. variant [XD]

    HTML:

    <p id="yy" style="display:none"><%= todos %></p>
    

    Javascript:

    <script>
        var x = document.getElementById("yy").innerText;
        console.log(x); 
    </script>
    
like image 102
Mohimenul Joaa Avatar answered Oct 15 '22 03:10

Mohimenul Joaa