1

モデルが破棄されたときに backbone.js コレクションがモデルを削除するのを防ぐ方法はありますか?

それが起こるたびに、コレクションから「削除」トリガーイベントを受け取ります

collection.on("remove", this.handleRemove)

すでにいくつかの引数を渡そうとしましたが、何もしませんでした

model.destroy({silent: false, remove: false})

4

1 に答える 1

1

解決策は、バックボーン モデルの破棄機能をオーバーライドすることです。成功とコールバック戦略を使用して抽象モデルでこれを作成しました。

パラメータ「data」は、元のパラメータ「resp」に対応します。

destroy: function(successCallback, errorCallback) 
{
    var options = { wait: true };
    var model = this;

    successCallback = successCallback || function() {};
    errorCallback = errorCallback || function() {};               

    var destroy = function() 
    {
        model.trigger('destroy', model, model.collection, options);
    };

    options.success = function(data) 
    {
        if ('SUCCESS' === data.responseCode)
        {
            if (options.wait || model.isNew())
                destroy();

             successCallback(data);

            if (!model.isNew())
                model.trigger('sync', model, data, options);
        }
        else
        {
            errorCallback(data);
        }
    };

    if (this.isNew()) 
    {
        options.success();
        return false;
    }

    var xhr = this.sync('delete', this, options);

    if (!options.wait)
        destroy();

    return xhr;
}
于 2013-09-19T07:27:14.017 に答える