2012-11-13 90 views
0

首先,請原諒我的天真問題。我知道有一個簡單的答案,但我目前正在同時學習JavaScriptBackBone,並遇到一些問題。使用動態信息呈現視圖

我只是試圖從我的JavaScript文件的信息集合中添加一個表到我的視圖。這裏是我的js文件:

(function(window,app,$){ 

    app.views.itemsIndex = Backbone.View.extend({ 
     id:"items-index", 

     initialize:function(){ 

     }, 

     events:{ 

     }, 

     render:function(){ 
      template = new EJS({ 
       url:"js/templates/patron/items/itemsIndex.ejs" 
      }); 

      this.$el.html(template.render()); 

      this.createDummies() 

      return this; 
     }, 

     createDummies:function(){ 

      var bookCollection = new app.collections.books(); 

      for (var i = 0; i < 10; i++) { 
       var book = new app.models.book({title : 'title ' + i}); 
       bookCollection.add(book); 

       var item = new app.views.itemsItem(); 
       this.$el.append(item.render().el); 
      }; 

      console.log(bookCollection); 
     } 
    }); 

})(window,window.circulationApp || {},$) 

我得到一個錯誤,當我試圖渲染錯誤未捕獲的ReferenceError的觀點:書沒有定義

下面

是我的EJS文件:

<td> 
    <div class="td-wrap"> 
     <%= book.escape('title') %></td> 
    </div><!-- .td-wrap --> 

有什麼想法?

+2

當你調用'template.render()'你沒有傳入任何數據到你的模板,所以* book *是未定義的。 – Jack

+0

是的。我明白那個。我如何傳遞這些數據? – coder

+0

我一直在使用下劃線模板,但我認爲對於esj,你將它傳遞給render方法,就像'template.render(this.model.getJSON()))'。這就是說,我認爲你的這個問題有點不對,但我不確定你想要做什麼,你的觀點是什麼「el」?是* itemsIndex *應該是父視圖? – Jack

回答

1

不明白整個事情,但是從我的理解要通過<td>元素

看起來EJS支持循環,那麼爲什麼不直接將收集到的觀點,並遍歷渲染書籍的集合書籍?

<% for (var i = 0; i < books.length; i++) {%> 
    <%= books[i].escape('title'); %> 
<% } %> 

createDummies將返回集合:

createDummies: function() { 
    var bookCollection = new app.collections.books(); 
    for (var i = 0; i < 10; i++) { 
     var book = new app.models.book({title : 'title ' + i}); 
     bookCollection.add(book); 
    }; 
    return bookCollection; 
} 

以使其:

var tpl = new EJS({ 
    url:"js/templates/patron/items/itemsIndex.ejs" 
}); 

var booksCollection = this.createDummies(); 

this.$el.html(tpl.render({books: booksCollection})); 

理想的骨幹,應只使用render方法來填補你的$el與HTML。

+0

我能夠適應這個我的代碼 - 謝謝。我得到一個'Uncaught TypeError:不能調用未定義'錯誤的方法'轉義'...我認爲'轉義'是一個js方法? – coder

+0

'escape'是'Model'類的一個方法,而'books'是一個模型集合,它應該可以工作..也許Collection不會模仿Array的方法,但我99%肯定它的確如此。嘗試打印'bookCollection' – mexique1