2

我希望我的模型验证重复条目,因此我需要在模型中访问集合。

我将 Backbone.JS 与 Require.JS 一起使用,这使它更加混乱。我似乎无法将我的集合加载为模块的依赖项。

我尝试在视图中进行验证,但我想最好的做法是将验证保留在应该在的模型中。

有什么建议吗?

4

1 回答 1

2

来自 Backbone Collection文档

如果您将模型添加到集合中已经存在的集合中,它们将被忽略,除非您传递 {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;
}

基本上,这将胜过添加任何具有重复id,cididAttribute.

如果这还不够,那么我建议您在视图中进行验证,因为将模型的集合作为对该确切模型的依赖项会引入循环依赖项,例如。您需要集合才能编译模型,但您还需要模型来编译集合。

因此,如果您需要确保没有将模型添加到具有与该集合中已有模型完全相同的属性的集合中,请在视图中执行此操作。它看起来像这样:

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