我在我的收藏中定义了添加处理程序:
var BookmarksCollection = Backbone.Collection.extend({
initialize: function() {
this.on('add', function(obj) {
console.log(obj.get('title') + ' added');
});
},
url: '/bookmarks',
model: Bookmark
});
从我的一个观点中调用它:
var AddView = Backbone.View.extend({
el: $('#entry'),
events: {
'click #submit': 'submitHandler'
},
submitHandler: function(event) {
if($('input').val()) {
var newBookmark = new Bookmark;
newBookmark.set({url: $('input').val()});
console.log('Save!');
newBookmark.save({
success: function(newBookmark) {
console.log('Success!');
myBookmarks.add(newBookmark);
myBookmarks.trigger('add', newBookmark);
}
});
}
}
});
但是我的集合上的添加处理程序永远不会被触发。事实上,甚至视图中的成功功能似乎都没有被调用。
但是newBookmark无论如何都会被保存,所以没有错误发生。
我错过了什么?
当发布新书签时,NodeJS以 201(已创建)回复。
也许骨干网需要 200(OK)来触发成功?
编辑:我尝试从成功功能外部触发事件并且它可以正常工作。 如何调整主干以对 201(已创建)?
作出反应答案 0 :(得分:0)
我认为问题在于他save
的第一个论点应该是你想要保存的数据。第二个是可以包含success
和error
回调的选项。
newBookmark.save({dataiwanttosave: "hi"}, {
success: function(newBookmark) {
console.log('Success!');
myBookmarks.add(newBookmark);
myBookmarks.trigger('add', newBookmark);
}
});