骨干.js两个层次的集合
backbone.js collections in two levels
所以,我刚刚开始使用 backbone.js 以及我在理解如何定义两个集合时遇到一些麻烦,其中一个集合位于另一个集合的模型中。
REST API 如下所示:
/sites <--- one collection
/sites/123/entities <--- another collection
/sites/123/entities/abc <--- a specific entity within a specific site
以下是定义网站集的方式:
var ROOT = 'http://localhost:5000';
Site = Backbone.Model.extend({
defaults: {
id: "default",
description: "My site"
}
});
Sites = Backbone.Collection.extend({
model: Site,
url: ROOT + "/sites"
});
实现此目的的实体集合和模型的外观如何?
这就是我想象的样子,虽然还没有测试过:实体模型/集合:
var ROOT = 'http://localhost:5000';
Entity = Backbone.Model.extend({
defaults: {
id: "default",
description: "My Entity"
}
});
Entities = Backbone.Collection.extend({
model: Entity,
ownUrl: '/entities',
site: {},
url: function() {
return (this.site? this.site.url() : '') + this.ownUrl;
},
initialize: function(options) {
this.site = options.site;
}
});
网站模型/集合:
Site = Backbone.Model.extend({
defaults: {
id: "default",
description: "My site"
}
});
Sites = Backbone.Collection.extend({
model: Site,
url: ROOT + "/sites",
});
设置示例:
// New collection of site
var site1 = new Site({id: 'site1', description: "This is site 1"});
var site2 = new Site({id: 'site2', description: "This is site 2"});
// Add entities to sites
var entityCollection1 = new Entities([
{id: 'entity1'},
{id: 'entity2'}
], {site: site1});
// Collection of sites
var mySites = new Sites([site1,site2]);
编辑:
- 根据 Backbone 文档,从 1.1 版开始,this.options 不再自动附加。抱歉,我仍然参考了 0.9.x 代码。
在 1.1 中,主干视图不再附加选项参数 this.options 自动。如果您愿意继续附加它,请随时 喜欢。http://backbonejs.org/#changelog
- 对于网址,我的错,它应该是this.site.url(),因为它是一个模型的函数,它将默认值作为[collection.url/modelId]。
在这种情况下,它应该为模型站点 1 返回"site/1"(即"site/2"),然后附加实体集合 URL 的任何内容。(例如:"/实体")。这使站点 1 的实体集合 URL 变为:/site/1/entities。此集合中的任何模型都将具有 url/site/1/entities/[modelId]
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- jsf中两个字符串的颜色代码差异
- 加载两个具有相同父密钥名称的json文件
- 在Qualtrics中,介绍如何动态连接两个滑块
- 访问$.ajax()函数中的两个不同数组
- 如何在three.js上添加两个向量
- 如何在datetimepicker中使用两个验证器
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 两个层次的手风琴除了第一次不起作用
- 咕哝浏览别名映射两个层次
- 骨干.js两个层次的集合