skip
skip

Reputation: 12653

How to pass data from EJS template to AngularJS controller

I've got the user data from ExpressJS through NodeJS as following:

app.js

app.get('/user', function(req, res) {
    res.render('users', { title: 'Foo', user: req.user });
});

users.ejs

<%= user %>

I need the user data from user.ejs above to an angularjs controller, so I could display that on other named views.

Could somebody help me with it?

Upvotes: 3

Views: 3989

Answers (2)

rk.
rk.

Reputation: 149

try this on template...

<% if(title){ %>
 <script>
window.Mytitle = <%- JSON.stringify(title) %>;
</sript>
<% } %>

try on your controller..
console.log(window.Mytitle);

================================================

try this on template...

<% if(user){ %>
<script>
  window.MyUser = {};
  window.MyUser = <%- JSON.stringify(user) %>;
</sript>
<% } %>

try on your controller..
console.log(window.MyUser);

sorry if am wrong..

Upvotes: 0

Dylan
Dylan

Reputation: 4773

Some say ng-init but it just feels dirty and wrong to me. You can put it inline and mess with the window and rootscope but it can get messy. Or you can inline another module like:

<script>
   angular.module('PreloadedData', [])
     .constant('User', <%- user %>);
</script>

Then it will be available like any other dependency.

Upvotes: 6

Related Questions