2

モデルで重複エントリを検証したいので、モデル内でコレクションにアクセスする必要があります。

私はBackbone.JSをRequire.JSと一緒に使用していますが、これにより少し混乱します。モジュールの依存関係としてコレクションをロードできないようです。

ビューで検証を実行しようとしましたが、ベストプラクティスは、モデルの検証を本来あるべき場所に保持することだと思います。

何かアドバイス?

4

1 に答える 1

2

バックボーンコレクションのドキュメントから:

すでにコレクションにあるモデルをコレクションに追加する場合、{merge:true} ...を渡さない限り、それらは無視されます。

-メソッドのどれがこれにadd変換されます

if (existing = this.get(model)) {
  if (options.merge) {
    existing.set(attrs === model ? model.attributes : attrs, options);
    if (sort && !doSort && existing.hasChanged(sortAttr)) doSort = true;
  }
  continue;
}

基本的に、それは重複するidcidまたはのモデルを追加するよりも優先されidAttributeます。

それだけでは不十分な場合は、ビューで検証を行うことをお勧めします。これは、モデルのコレクションをその正確なモデルへの依存関係として持ち込むと、循環依存関係が導入されるためです。モデルをコンパイルできるようにするにはコレクションが必要ですが、コレクションをコンパイルするにはモデルも必要です。

したがって、コレクションにすでに存在するモデルとまったく同じ属性を持つモデルをコレクションに追加していないことを確認する必要がある場合は、ビューで追加してください。次のようになります。

if (collection.where(modelToBeAdded.toJSON()).length == 0) {
  collection.add(modelToBeAdded);
}
于 2013-03-11T13:30:21.297 に答える