1

コレクションに追加ハンドラーを定義しました。

var BookmarksCollection = Backbone.Collection.extend({
    initialize: function() {
        this.on('add', function(obj) {
            console.log(obj.get('title') + ' added');
        });
    },
    url: '/bookmarks',
    model: Bookmark   
});

そして、それは私の見解の1つから呼び出されています:

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(作成済み)に反応するようにバックボーンを微調整するにはどうすればよいですか?

4

1 に答える 1

0

save問題は、保存しようとしているデータを最初の引数にする必要があることだと思います。success2 つ目は、およびerrorコールバックを含めることができるオプションです。

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

});

于 2013-01-18T18:40:19.280 に答える