如何使用Backbone在特定嵌套的对象数组中设置新的模型信息
How to set new model info in specific nested array of objects using Backbone?
我有一个简单的联系人表单提交时应该设置我的模型的联系人部分内的值,我做了很少的设置/保存在一个模型上,所以我想知道是否有什么特别设置到模型的特定部分?
JS 要保存的数据(myNewContactObject)
{
"name": "Joe Bloggs",
"email": "joe@bloggs.com",
"telephone": "0123456789"
}
应该保存到模型的嵌套联系人数组,示例结构:
[
{
"id": 1,
"name": "model name",
"teams": [
{
"name": "team one name"
},
{
"name": "team two name"
}
],
"contacts": [
{
"name": "James Smith",
"email": "james@gkugi.com",
"telephone": "18917391847"
}
]
}
]
我可以直接写this.model.set(myNewContactObject)? or do I need to do something like this.model.contacts.set(myNewContactObject)?
或者,也许这种方法是错误的,我应该让collection out of the contacts
像ContactsCollection
一样,每次设置每个ContactModel
?
Backbone的Model.set
有以下语法:
this.model.set('attribute-name', 'attribute-value')
因此,要将属性"contacts"设置为复杂数组对象,可以这样做:
var contacts = this.model.get('contacts');
contacts.push(myNewContactObject);
注意,在这种情况下,由于数组在JavaScript中是通过引用传递的,因此不需要调用contacts.set
;get()调用返回一个引用,通过该引用可以直接改变联系人数组。但是,如果构建一个新的数组:
var newContacts = [myNewContactObject];
你需要这样设置:
this.model.set('contacts', newContacts);
请注意,您希望修改的属性是作为参数传递的,而不是作为模型的属性引用的,因此您提到的this.model.contacts.set
语法在任何情况下都不起作用。
请记住,Backbone允许您将复杂对象设置为属性的值,但它不会帮助您将该属性挖掘到任意深度。要做到这一点,你需要一个像backbone-deep-model
这样的主干插件,它可以与npm install
和bower install
一起安装。这将允许你这样做:
this.model.get('contacts.0.name')
如果没有这样的东西,你只能做:
this.model.get('contacts')
,然后解析出您想要的联系人/属性。
你也可以做你提到的,并创建一个联系人的集合,但这在很大程度上取决于你计划如何在你的后端建模你的数据。如果在后端设置了关系API,例如api/v1/persons/<person-id>/contacts
,那么您可能希望使用该URL创建联系人集合,并为每个人创建相关集合。在这个例子中,是的,你数组中的每个联系人对象实际上会是它自己的模型,你的"数组"会是一个backbone。collection。这是否是正确的方法取决于您的建模。
如果您有兴趣这样做,您可能想看看backbone-relational
,尽管使用Backbone处理关系数据的概念是一个有争议的领域。
- 需要帮助设置json数组
- 数组在递归方法中设置为null
- 在for循环中使用多维数组设置google.maps.Marker图标
- Jquery数组-设置和加载值
- 通过过滤器数组设置对象数组的属性
- 如何将对象数组设置为格式为 { x: {Number}, y: {Number} }?Javascript
- 如何使用 AJAX 在 jquery 中将返回的 JSON 数组设置为变量
- 关联数组设置不正确
- 尝试将数据数组设置为从视图调用函数后$scope
- Javascript 截距数组设置值
- Javascript 将数组设置为另一个数组元素的属性
- 为什么调用array.prototype. foreach .call()时将数组设置为THIS对象不能工作?
- 使用Json数组设置折线路径
- 从数组设置Google电子表格单元格值,但所有值都是相同的
- 使用统一数组设置批处理顶点数组的alpha值
- 如何将整数数组设置为电子表格单元格
- 在mark.js中为单独的单词数组设置样式
- 在Javascript中将数组设置为json格式的值
- 有没有一种方法可以将类型化数组设置为零
- 我无法基于数组设置背景图像