2013-05-03 91 views
0

由於某種原因,this.model不能在我的editUsp方法中工作。我想用.set更改模型中的值。骨幹this.model.set不工作

有人知道,我做錯了什麼?

我得到這個錯誤:

Uncaught TypeError: Object function(){ return parent.apply(this, arguments); } has no method 'set' 

這是代碼:

var Usp = Backbone.Model.extend(); 

var widgetView = Backbone.View.extend({ 
    model: Usp, 
    initialize: function (data,collection) { 
     var usp = new Usp({type:'usp', items: data}); 
     collection.add(usp); 
     this.render(data); 
    }, 
    events: { 
      "click .edit": "editUsp", 
    }, 
    editUsp: function(){ 
     this.model.set({type:'uspsss',items: 'hoi'}); 
    }, 
    render: function(data){ 
     var uspList = '<ul>'; 
     $.each(data['Usps'], function(i,item){ 
      uspList += '<li>'+item+'</li>'; 
     }); 
     var template = _.template('<div class="block"><a class="edit"><i class="icon-edit"></i> Edit </a><%= uspList %></div>'); 
     var widgetView = template({uspList: uspList}); 
     this.setElement(widgetView); 
     $('.laySidebar .smallBlocks').append($(this.el).hide().fadeIn(700)); 
    } 
    }); 

回答

1

,而不是在第一線Backbone.Model.extend(...),試試這個,而不是...

var Usp = new Backbone.Model();

extend(...)只是擴展了Backbon e.Model類。要執行set,您需要一個模型實例。

2

您需要在視圖中引用模型的實例。

例如:

var usp = new Usp(); 

現在你有你的模型的一個實例。它傳遞到您的視圖實例

var widgetViewInstance = new widgetView({model: usp}); 

從widgetView定義中刪除以下行:

model: Usp, 

休息應該能正常運行。