2013-04-04 58 views
0

我在node.js ejs模板中遇到了一個有問題的問題。 這是快速代碼。無法呈現在node.js的ejs模板中

app.get('/course',function(req,res){ 
    var locals = {}; 
    locals.course = { 
      title: 'data.title', 
      city: 'data.city', 
      desc: 'data.desc', 
      id: 'data._id' 
    };   
    res.render('course_description',locals); 
}); 

這裏是模板代碼

<div > 
    <article> 
    <% if(locals.course) { %>   
      <div><% locals.course.title %></div> 
      <div><% locals.course.city %></div> 
      <div><% course.city %></div> 
      <div><% course.title %></div> 
    <% } %> 
    </article>  
</div> 

時res.render( 'course_description',當地人);被觸發時,本地數據應該傳遞給模板,但由於某些未知原因,它不適用於此示例。

所有我得到的是4個空

<div > 
    <article>   
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
    </article>  
</div> 

有誰前滿足這個持的問題,我很困惑,我以前做了一些工作示例,但是當我比較這與其他工作的人,我還是找不到原因。

注意,我使用的是最新的EJS,並表示

回答

2

<% ... %>是碼構造,而不是輸出。

試試這個:

<div> 
    <article> 
    <% if (locals.course) { %> 
     <div><%= locals.course.title %></div> 
     <div><%= locals.course.city %></div> 
     <div><%= course.city %></div> 
     <div><%= course.title %></div> 
    <% } %> 
    </article> 
</div> 
+0

正確答案。我應該更快;) – Maroshii 2013-04-04 18:56:44

+0

是的,它的工作原理,感謝羅伯特。但我還有其他一些以前面的方式工作的例子。有什麼不同? – user824624 2013-04-04 19:32:07

+0

'<% .. %>'用於執行代碼。如果該代碼生成輸出,則該輸出*將被渲染,但不會渲染傳遞給它的變量;爲此,您需要'<%= .. %>'或'<%- .. %>'。 – robertklep 2013-04-04 20:13:04