BackboneJS:模型验证中的collection.pluck()

时间:2013-03-11 12:49:22

标签: javascript backbone.js requirejs

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

来自Backbone Collection docs

  

如果您要将集合中的模型添加到集合中,那么它们将被忽略,除非您通过{merge:true} ...

add方法中的哪一个转换为this

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;
}

基本上,这将胜过添加任何带有重复idcididAttribute的模型。

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

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

if (collection.where(modelToBeAdded.toJSON()).length == 0) {
  collection.add(modelToBeAdded);
}