Backbone on('add')没有被调用

时间:2013-01-18 18:17:23

标签: backbone.js

我在我的收藏中定义了添加处理程序:

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(已创建)

作出反应

1 个答案:

答案 0 :(得分:0)

我认为问题在于他save的第一个论点应该是你想要保存的数据。第二个是可以包含successerror回调的选项。

newBookmark.save({dataiwanttosave: "hi"}, {
  success: function(newBookmark) {    
    console.log('Success!');                
    myBookmarks.add(newBookmark);
    myBookmarks.trigger('add', newBookmark);
  }

});