2012-12-14 62 views
0

下劃線模板看起來很簡單,但我正在努力嘗試第一次,並且難住了。下劃線模板變量 - 剛開始

我只是想在H1中顯示一個人的名字。

這裏是我的模板:

<script id="tmpl-index-list" type="text/template"> 
<% _.each(data, function(item){ %> 
    <li> 
     <a href="#person" data-transition="slide"> 
      <h1><%=item.personName%></h1> 
     </a>  
    </li> 
<% }); %>     

這是我的JS:

var tmplMarkup = $('#tmpl-index-list').html(); 
var compiledTmpl = _.template(tmplMarkup, {data: IndexList.listEntries}); 
$('#index-list-wrapper').html(compiledTmpl); 

IndexList.listEntires是一個ListEntry對象,簡單的鍵/值對象的數組。

例如,這裏是「類」:

function ListEntry(){ 
    this.img_url = ''; 
    this.personName = ''; 
    this.personID = ''; 
}; 

當我做了console.dir就可以了,數據是存在的,但對於item.personName在模板中,它出現爲未定義。

我錯過了什麼?

在此先感謝。

+0

查看你在控制檯中得到了什麼:'<%_.each(data,function(item){console.log(item)%>' –

+0

'item'是一個數組,但是項目[0]出現未定義。 –

+0

請發佈一些精確的「IndexList.listEntries」示例內容 – mVChr

回答

0

我相信問題出在您傳遞的數據上。您正在使用IndexList.listEntries,但您尚未提供任何示例數據。

根據您的意見,該listEntries是一個對象數組,如ListEntry,我已經放在一起的一些示例數據。

var IndexList = { 
    listEntries : [ 
     { 
      "img_url" : "http://www.gravatar.com/avatar/72b3fbc4d71d3955deca44483322da23?s=32&d=identicon&r=PG", 
      "personName" : "Tim", 
      "personId" : "Tim76" 
     }, 
     { 
      "img_url" : "http://www.gravatar.com/avatar/0927a92a180a7552e2119742ede9b9cf?s=128&d=identicon&r=PG", 
      "personName" : "Rob", 
      "personId" : "Robert Price" 
     } 
    ] 
}; 

使用此數據時,您的模板在運行時正確顯示「Tim」和「Rob」作爲列表項。

我建議你去看看你試圖使用的IndexList數據,問題幾乎肯定存在。