由于某种原因,this.model在我的editUsp方法中不起作用。我想用.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));
}
});
答案 0 :(得分:2)
您需要在视图中引用模型的实例。
例如:
var usp = new Usp();
现在您有一个模型实例。将其传递给您的视图实例
var widgetViewInstance = new widgetView({model: usp});
从widgetView定义中删除以下行:
model: Usp,
休息应该可以正常工作。
答案 1 :(得分:1)
而不是第一行中的Backbone.Model.extend(...)
,请改为尝试...
var Usp = new Backbone.Model();
extend(...)
只是扩展了Backbone.Model类。要执行set
,您需要一个模型实例。