我一直在浏览多篇关于如何使用非 RESTful 服务器保存 Backbone 集合的帖子,但我仍然有点困惑。我创建了一个集合,我在其中覆盖了 toJSON 方法来自定义我的数据以发布到我的 API ("/api/entity/735/request/personDelete"目前已换成 jsfiddles/echo/json)。所以我创建了一个使用 Backbone.sync 的 save 方法,成功 我正在注销任何类型的响应并且对象是空虚,不确定东西在哪里丢失或我做错了什么;谁能给我一些指导?只是想让这个示例正常工作,以便我以后可以使用类似的东西。
JS
var PersonCollection = Backbone.Collection.extend({
model: PersonModel,
url: function() {
// Dummy JSFiddle endpoint
// Example non-RESTful url "/api/entity/735/request/personDelete"
return '/echo/json/';
},
/**
* Override toJSON to loop through collection models making
* custom objects containing specific attributes to be posted.
*/
toJSON: function() {
console.log(this.models);
var plucked = this.models.map(function(model) {
return _.pick( model.toJSON(), ["id","name", "teams"] )
});
console.log(plucked);
return plucked;
},
save: function(options) {
Backbone.sync('create', this, {
success: function(data, textStatus, jqXHR) {
console.log('Saved!', data);
}
});
}
});
JSFiddle: http://jsfiddle.net/kyllle/f1h4cz7f/3/
最佳答案
如果它对您没有帮助,您不必强制自己使用 sync。 sync 可以在常见情况下为您节省时间。
正如您在 annotated sync code 中看到的那样, 它最终只调用 jQuery.ajax并包含有助于 RESTful 后端的逻辑。
它还会触发一些事件,您可能会或可能不会在应用的其他部分收听这些事件,例如 request(发出请求时)和 sync(当请求已成功完成)或错误(如果请求失败)
如果重新发明 sync 并不令人兴奋,那么您可以在您的应用中执行所有这些操作。
准备好数据,调用$.ajax将数据发送到您的后端,并且可以选择 trigger Backbone 事件,如果你要听的话。
关于javascript - Backbone : Saving an entire collection to non-RESTful server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33135228/