2013-07-04 24 views
1

在下面的代碼中,導航器拋出一個錯誤,我使用backbone.js與require.js從視圖中加載圖書,這是我的代碼:骨幹錯誤,對象[object global]沒有方法...

BookListView.js

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
    'collections/bookCollection', 
    'views/bookView' 
], function ($, _, Backbone, bookCollection, bookView) { 

    var books = [{ ... }]; 

    var BookListView = Backbone.View.extend({ 
     el: $('#books'), 

     initialize: function() { 
      _.bindAll(this, 'render', 'renderBook'); 
      this.collection = new bookCollection(books); 
      this.render(); 
     }, 

     render: function() { 
      _.each(this.collection.models, function (item) { 
       this.renderBook(item); 
      }); 
     }, 

     renderBook: function (item) { 
      var BookView = new bookView({ 
       model: item 
      }); 
      this.$el.append(BookView.render().el); 
     } 
    }); 

    return BookListView; 

}); 

和控制檯返回我的錯誤:對象[對象全局]有沒有方法 'renderBook'

你能幫助我嗎?

+0

順便說一句,'this.collection.each(...)'會比'_.each(this.collection更好。模型,...)',集合內置了[各種Underscore方法](http://backbonejs.org/#Collection-Underscore-Methods)。 –

回答

2

嘗試顯式上下文添加到每個呼叫:

_.each(this.collection.models, function (item) { 
    this.renderBook(item); 
}, this); 
相關問題