我是Backbone的新手。我已经开始使用Backbone开发一个Web应用程序,但是,这个错误使我摆脱了困境。任何帮助,将不胜感激。
这是我的模型类和集合:
var tasks = Backbone.Model.extend({
default: function() {
return {
task : ''
}}
});
var taskslist = Backbone.Collection.extend({
model: tasks
});
var alltasks = new taskslist();
这是View Class:
var taskview = Backbone.View.extend({
model: new tasks(),
tagName: 'div',
initialize : function() {
this.template = _.template($('#temp').html());
},
render : function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
var alltasksview = Backbone.View.extend ({
model : 'tasks',
el : $('#box1'),
initialize : function() {
this.model.on('add', this.render, this);
},
render: function () {
var self = this;
self.$el.html('');
_.each(this.model.toArray(), function(tasks, i) {
self.$el.append(new tasksview({ model:tasks }).render().$el);
});
}
});
在jQuery文档就绪函数中,我按这样的方式点击一个按钮,在点击时添加该模型的项目:
$(document).ready(function() {
$("#but1").click(function(e) {
var task1 = new tasks({ task : $('#text1').val() });
alltasks.add(task1);
console.log(alltasks.toJSON());
});
});
这段代码抛出了主题错误。另外,My Backbone版本是1.0.0。
谢谢。
答案 0 :(得分:0)
正如您在Catalog of Events 中看到的那样add
事件存在且应该在您的模型上触发。
问题可能出在模型中,在上面的代码中,看起来你的模型只不过是一个字符串:
....
model : 'tasks',
el : $('#box1'),
...
可能没有add
个事件。尝试正确初始化this.model
,它将按预期工作。
这是我在另一个SO question中找到的小提琴:http://jsfiddle.net/ambiguous/Das2t/
答案 1 :(得分:0)
我有同样的问题,我刚才修好了。 问题是Backbone需要jQuery 1.7或更高版本,我将jQuery版本1.10替换为1.4.3,此错误已不再发生。 如果这不起作用,请尝试使用bind方法。