Backbone.js没有在模型更改时发布到服务器?为什么?

时间:2012-01-03 18:13:17

标签: javascript jquery backbone.js

我有以下内容:

// MODEL
NotificationModel = C.BB.Model.extend({
    defaults : {
        read : false
    },
    urlRoot : '/notifications'
});


// COLLECTION
NotificationCollection = C.BB.Collection.extend({
    model: NotificationModel,
    url: '/notifications',
    initialize : function() {
        var me = this;
        me.fetch();
    }
});

后来我认为:

...

onCollectionAdd : function(m,c,cfg) {
    m.set({read: true},{silent: false});

该集正在更改项值,但Backbone未将更新发布到服务器。有什么建议?感谢

2 个答案:

答案 0 :(得分:2)

你需要调用m.save(),它将调用对应的方法create()或update()。

方法set()仅触发change()事件,后者不保存后端的任何数据

答案 1 :(得分:1)

您可以将事件绑定到集合以保存它们:

NotificationCollection = C.BB.Collection.extend({
    model: NotificationModel,
    url: '/notifications',
    initialize : function() {
        this.fetch();
        this.bind('change', this.save, this);
    }
});

注意还有Collection.create方法,它将新模型添加到集合中并将集合保存在服务器上。