javascript - 如何使用和访问 Backbone.js 集合作为模型中的属性/属性?

标签 javascript backbone.js model-associations backbone-relational backbone.js-collections

我是 Backbone 的新手(仍然停留在 Ruby on Rails 模式),并且对于如何将集合作为属性/属性添加到模型中有点困惑(“属性”是正确的术语吗?)。

例如,我有一个名为 current_plan 的模型,以及一个名为 json_dump 的变量,该变量是从服务器返回的,其中包含一个 participants 数组>。我希望它有一个名为 participants 的属性(这是参与者的集合),从 json_dump.participants 变量填充它,并能够使用像 `current_plan.participants.where({first_name :“丹”})。

以下是我的初始化函数的一些片段:

var current_plan = new Plan();

current_plan.set({attribute: val} ...other attributes... );
current_plan.participants = new Backbone.Collection(json_dump.participants);

但这迫使我访问常规属性,例如:current_plan.attributes.attribute。另外,我可以看到 current_plan.attributes.participants.models 中有正确的数据,但我不知道如何在 current_plan 上使用任何 Collection 方法>.

显然我不明白发生了什么,以及为什么涉及这么多额外的层。 Backbone 文档似乎有点稀疏,我在 SO 或 Google 搜索上找不到任何与我想做的事情相匹配的内容。如果还有其他问题或教程可以解释这一点,我将非常感谢有人向我指出这一点。我还看到了Backbone Relational项目看起来可能正是我所需要的,但在我了解基础知识之前,我不想给 Backbone 添加更多复杂性。

感谢您为帮助新 Backbone 用户提供的任何帮助!

最佳答案

我认为主干框架没有正式的方法来处理模型和集合之间的关系,而且我不使用主干关系,但我的主干集合/模型中有多种关系。 当我使用集合定义关系模型时,我将其用作模型对象的属性,而不是主干属性,因此:

var current_plan = new Backbone.Model(); //or backbone model extended 
current_plan.participants = new Backbone.Collection(json_dump.participants);

然后,正如 @andrew-hubbs 所说,您应该始终使用主干 api 来处理模型和集合属性,以使代码与主干版本保持一致。 然后您可以像这样访问/设置模型属性

current_plan.get('property'); 
participant = current_plan.participants.get(1);
participant.get('property');
participant.set('name', 'bob');

关于javascript - 如何使用和访问 Backbone.js 集合作为模型中的属性/属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734688/

相关文章:

javascript - 模块构建失败 : Error: AotPlugin was detected but it was an instance of the wrong class

javascript - CompositeView 为大型结果集 Marionette 呈现项目的速度很慢

ruby-on-rails - Rails Rich Association - 覆盖关联模型

ruby-on-rails - Rails 3 - 模型关联(组合)和方法委托(delegate)

javascript - Vue3-使用 Vitest toHaveBeenCalled() 方法

javascript - jQuery 不调整图像大小或在幻灯片中播放它们

javascript - Vue.js 使用计算属性来显示或隐藏组件的一部分

javascript - 重新呈现 Marionette.js CollectionView 的仅更改部分

view - Backbone.js View : this. el 属性的模板化问题

database - sequelize 返回手动定义的连接表的关联