4

アプリにカスタムsyncメソッドがありbackbone.jsます。私のモデルはすべてこのメソッドを呼び出しますがsuccess、このメソッドをオーバーライドしたため、個々のモデルの成功メソッドは呼び出されなくなりました。これが私の言いたいことです-以下は私のカスタム同期方法です:

app.customSync = function(method, model, options) {
    var success = options.success,
        error = options.error,
        customSuccess = function(resp, status, xhr) {
            //call original, trigger custom event
            if(con)console.log('in custom success');
            success(resp, status, xhr);
        },
        customError = function(resp, status, xhr) {
            if(con)console.log('in custom error');
            error(resp, status, xhr);
        };
    options.success = customSuccess;
    options.error = customError;
    Backbone.sync(method, model, options);
};
Backbone.Model.prototype.sync = app.customSync;

モデルの保存から成功を呼び込もうとしている例を次に示します。

this.model.save({
    success:function(model, response){
         if(con)console.log('this is never called');
    }
});

カスタム成功メソッドを使用してカスタム同期を維持し、個々の保存から成功を呼び出す方法を知っている人はいますか?

補足として、 を呼び出してみsuccess msuccessましたmodel.savemsuccess、 カスタム同期では が定義されていませんでした。

4

1 に答える 1

4

Model.saveの最初の引数は、変更したい属性のハッシュです。オプションは 2 番目に来て、成功/エラーのコールバックを保持します。

試す

this.model.save({}, {
    success: function() {
        console.log('save success');
    }
});

そして、これが機能していることを確認するためのフィドルhttp://jsfiddle.net/nikoshr/XwfTB/

于 2013-04-22T15:58:28.890 に答える