2017-03-06 94 views
1

我已經在我的骨幹代碼上實現了一個視圖,試圖在我的模型上添加數據之前顯示所有修改。但由於某種原因,我的觀點返回「this.model.toJSON()不是一個函數」,我一直嘗試從我的表單添加一些東西。我不知道什麼是錯的。骨幹視圖不能用this.model.toJSON()

它在視圖「userView」render()中出現。遵循我的2個觀點,模型和集合。

型號:

 var userModel = Backbone.Model.extend({ 
      defaults: function() { 
      return { 
       nome: '', 
       sobrenome: '' 
      }; 
      } 
     }); 

觀點:

  var userView = Backbone.View.extend({ 
      model: new userModel(), 
      tagName : 'div', 
      initialize: function(){ 
       this.template = _.template($("#user-template").html()); 
      }, 
      render : function() { 
       this.$el.html(this.template(this.model.toJSON())); 
       return this; 
      } 
     }); 

圖2:

 var userViewes = Backbone.View.extend({ 
      model: users, 
      el: $("#user-container"), 
      initialize: function(){ 
       this.model.on("add", this.render, this); 
      }, 
      render: function() { 
       var self = this; 
       self.$el.html(""); 
       _.each(this.model.toArray(), function(user, i){ 
       self.$el.append((new userView({model: userModel })).render().$el); 
       }); 

       return this; 
      } 
     }); 

終於,我的收藏:

 var userCollections = Backbone.Collection.extend({ 
      model: userModel 
     }); 

對於任何錯誤感到抱歉。

+0

您是否嘗試過首先測試模型:'console.log(this.model)'? –

+0

雅。返回this - > function(){return parent.apply(this,arguments); } –

+0

這看起來像一個未初始化的模型 –

回答

1

問題是您將未初始化的模型傳遞給視圖。取而代之的userModel,通過user

_.each(this.model.toArray(), function(user, i){ 
    self.$el.append((new userView({model: user })).render().$el); 
}); 

而且,你不需要做this.model.toArray(),而是你可以這樣做:

this.model.each(function(user, i){ 
    self.$el.append((new userView({model: user })).render().$el); 
}); 

個人而言,我會打電話給我的收藏collection而不是model

+0

它解決了關於「this.model.toJSON()」的問題。但該應用程序仍然沒有在視圖上顯示數據。在這種情況下,用戶名。 –

+0

驗證模型是否包含用戶名。另外,你的模板代碼在哪裏? (#用戶模板) –

+0

我有這個問題。我把js放在文檔的末尾,一切都好。 –