1

バックボーンとサーバーでは、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);
        }

    }); 

},

理想的には同期/保存/設定を使用して、さまざまなエンドポイントを URL にアタッチする機能が必要です

4

1 に答える 1

0

昨日、似たような質問をしました。PATCHの使用を検討しましたか? http://backbonejs.org/#Model-save . これにより、単一のエンドポイントを持つことができますが、更新する属性のみを渡すことができますか? 例 model.save(attr, {patch: true});

于 2013-06-26T08:09:04.740 に答える