2013-10-18 48 views
1

我在查看爲什麼模型沒有出現在收藏視圖實例化時遇到問題。數組被調用,當我打電話給notes.models時,我得到正確的記錄數。但是,console.log(note)應該被調用,沒有任何反應。所以,抓取似乎正在工作,並有數據,我可以在響應中看到它,它只是沒有被傳遞到collection.each視圖。歡迎任何幫助。這是一切。調用集合時,模型沒有填充數據。 Backbone和Django-Tastypie

TastpieCollection和TasttypieModel來自http://paltman.com/2012/04/30/integration-backbonejs-tastypie/這似乎工作得很好。

$(function() { 

    // Note: The model and collection are extended from TastypieModel and TastypieCollection 
    // to handle the parsing and URLs 

    window.Note = TastypieModel.extend({}); 

    window.Notes = TastypieCollection.extend({ 
     model: Note, 
     url: NOTES_API_URL 
    }); 

    // starts by assigning the collection to a variable so that it can load the collection 
    window.notes = new Notes(); 

    window.NoteView = Backbone.View.extend({ 

     className: "panel panel-default note", 
     template: _.template($('#notes-item').html()), 

     initialize: function() { 
      _.bindAll(this, 'render'); 
      this.model.bind('change', this.render); 
     }, 
     render: function() { 
      this.$el.html(this.template(this.model.toJSON())); 
      return this; 
     } 
    }); 

    window.NoteListView = Backbone.View.extend({ 

     id: "notes-block", 
     className: "panel panel-info", 
     template: _.template($('#notes-item-list').html()), 

     initialize: function() { 
      _.bindAll(this, 'render'); 
      this.collection.bind('change', this.render); 
     }, 
     render: function() { 
      this.$el.html(this.template()); 
      this.collection.each(function(note){ 
       //var view = new NoteView({ model: note }); 
       console.log(note); 
       //$('#notes-list').append(view.render().el); 
      }); 
      console.log('done'); 
      return this; 
     } 
    }); 

    window.NotesRouter = Backbone.Router.extend({ 
     routes: { 
      "": "list", 
      'blank': 'blank' 
     }, 
     initialize: function() { 
      this.notesView = new NoteListView({ 
       collection: window.notes 
      }); 
      notes.fetch(); 
     }, 
     list: function() { 
      $('#app').empty(); 
      $('#app').append(this.notesView.render().el); 
      console.log(notes.length); 
     }, 
     blank: function() { 
      $('#app').empty(); 
      $('#app').text('Another view'); 
     } 
    }); 

    window.notesRouter = new NotesRouter(); 
    Backbone.history.start(); 
}) 
+0

在嘗試使用'this.collection.each'之前,確定'fetch'(這是一個AJAX調用)從服務器返回嗎? –

+0

我很確定。我將notes.fetch移到了一堆不同的位置。不用找了。只是爲了檢查,我刪除了抓取,所以它不會調用任何東西,並且notes.models中沒有任何東西。所以抓取工作正常。 –

+0

嘗試使用'console.log(this.collection.toJSON())','console.log'將實時引用放入控制檯中,因此當您調用console.log時,您在控制檯中看到的內容不一定就是那裏的內容。 –

回答

0

答案是它正在工作。這不是我想要的方式,但上面的代碼確實有效。所以我會以不同的方式提出這個問題來解決問題的核心。