0

私はこれに頭を悩ませているので、いくつかのガイダンスが欲しい.

同様の方法ですべてのモデルを検証したい管理者のcrudアプリがあります。検証に使用しているコードは、検証関数で使用すると正常に機能します。

var ModelName = Backbone.Model.extend({
    // ...
    validate: function (attrs) {
        // stuff happens
        return errors;
    }
});

ただし、すべてのモデルで検証を使用したいので、すべてのモデルで同じコードを繰り返したくありません。

バックボーン モデルを拡張して、この検証機能をすべてのモデルに含めるにはどうすればよいですか?

4

2 に答える 2

2

たとえば、「サブクラス化」することでこれを簡単に行うことができます。

var Validatable = Backbone.Model.extend({
    validate: function (attrs) {
        // stuff happens
        return errors;
    }
});

var ModelOne = Validatable.extend({
   ...
});

var ModelTwo = Validatable.extend({
   ...
});

または、引き続きベースにBackbone.Modelして直接使用_.extendします。

于 2012-08-07T22:57:30.937 に答える
1

@ggozad が示した優れたソリューションにもかかわらず、検証ロジックを次のような共有関数にいつでも移動できます。

var Utils = {}
Utils.validateSomething = function( attributes ){
  // stuff happens
  return errors;
}

var ModelName = Backbone.Model.extend({
  validate: Utils.validateSomething
});

すべてのクラスでラインを複製する必要がありvalidateますが、DRY で十分だと思います。

于 2012-08-07T23:19:52.403 に答える