Backbone.js Model different url for create and update?

后端 未结 5 1369
情书的邮戳
情书的邮戳 2020-12-22 19:07

lets say I have a Backbone Model and I create an instance of a model like this:

var User = Backbone.Model.extend({ ... });
var John = new User({ name : \'Joh         


        
5条回答
  •  渐次进展
    2020-12-22 19:39

    To abstract dzejkej's solution one level further, you might wrap the Backbone.sync function to query the model for method-specific URLs.

    function setDefaultUrlOptionByMethod(syncFunc)
        return function sync (method, model, options) {
            options = options  || {};
            if (!options.url)
                options.url = _.result(model, method + 'Url'); // Let Backbone.sync handle model.url fallback value
            return syncFunc.call(this, method, model, options);
        }
    }
    

    Then you could define the model with:

    var User = Backbone.Model.extend({
        sync: setDefaultUrlOptionByMethod(Backbone.sync),
        readUrl: '/user/get',
        createUrl: '/user/create',
        updateUrl: '/user/update',
        deleteUrl: '/user/delete'
    });
    

提交回复
热议问题