草庐IT

javascript - Backbone : Saving an entire collection to non-RESTful server

coder 2024-05-14 原文

我一直在浏览多篇关于如何使用非 RESTful 服务器保存 Backbone 集合的帖子,但我仍然有点困惑。我创建了一个集合,我在其中覆盖了 toJSON 方法来自定义我的数据以发布到我的 API ("/api/entity/735/request/personDelete"目前已换成 jsfiddles/echo/json)。所以我创建了一个使用 Backbone.syncsave 方法,成功 我正在注销任何类型的响应并且对象是空虚,不确定东西在哪里丢失或我做错了什么;谁能给我一些指导?只是想让这个示例正常工作,以便我以后可以使用类似的东西。

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/

最佳答案

如果它对您没有帮助,您不必强制自己使用 syncsync 可以在常见情况下为您节省时间。

正如您在 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/

有关javascript - Backbone : Saving an entire collection to non-RESTful server的更多相关文章

随机推荐