【问题标题】:Backbone set save (PUT) request with different URL endpoints具有不同 URL 端点的主干集保存 (PUT) 请求
【发布时间】:2013-06-22 16:09:23
【问题描述】:

在骨干网和服务器上,我在 id (api/order/ID/call 和 api/order/ID/status)之后提出了具有不同端点的请求。显然,我需要根据不同的操作来设置这些。我通过扩展/覆盖模型同步获得了工作状态:

sync: function(method, model, options){

    if (method == 'PUT' || method == 'update') {

        model.url = '/venues/orders/' + model.id + '/status';

        var jsonData            = {};
            jsonData.staffid    = 1;
            jsonData.groupid    = 0;
            jsonData.statusid   = this.get('status.statusid');

        //if the options url is set use that otherwise use /status
        if( options.url ){
            model.url = options.url;
        }

        options.data = JSON.stringify(jsonData);
    }

    return Backbone.sync(method, model, options);
 }

我有一个设置选项 url 的调用函数:

CallToBar: function(el){

    log("CallToBar Action");

    el.preventDefault();
    el.stopPropagation();

    var target = $(el.currentTarget);

    target.text('Calling...');
    var that = this;

    this.model.save({}, {
        url: '/venues/orders/' + this.model.id + '/call',
        data: '',
        success: function(){
            target.text('Called');

            timeout = setTimeout(function() {

                if( !$(this.el).find('.additional-options').hasClass('hide') ){
                    that.orderClicked();
                }
                target.text('Call to bar');

            }, 1500);
        }

    }); 

},

我希望能够通过 sync/save/set 将不同的端点附加到 url 上

【问题讨论】:

    标签: javascript html backbone.js


    【解决方案1】:

    我昨天问了一个类似的问题。您是否考虑过使用 PATCH? http://backbonejs.org/#Model-save 。这允许你有一个单一的端点,但只允许你传递你想要更新的属性?例如model.save(attr, {patch: true});

    【讨论】:

    • PATCH 并不是我真正需要的,因为调用只是触发器,我不想更改 attr。此外,服务器上当前未配置 PATCH。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多