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

BackboneJS: collection.pluck() in model validation

本文关键字:collection pluck 模型 验证 BackboneJS      更新时间:2023-09-26

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

我正在使用Backbone.JS和Require.JS一起使用,这使得它有点令人困惑。我似乎无法加载我的集合作为模块的依赖项。

我试着在视图中做验证,但我想最好的做法是在模型中保持验证。

任何建议吗?

From Backbone Collection docs:

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