Backbone / Marionette模型url链接

时间:2013-02-16 08:49:17

标签: api backbone.js marionette

我有一个node.js后端使用express-resource来管理我的猫鼬模型。

我有一个MarionetteJS前端。

我的例子是两个对象是组织和项目。

我的服务器将资源汇总到像example.com/api/v1/organization/12/project

这样的uri

ids是独特的,因为我是从mongodb服务的。如果我只做../project/2

,它会奏效

但是为了接收组织内的项目,我只能做第一个项目,因为无国籍。

我现在在客户端有Backbone模型。我确定了一个像api/v1/organization这样的基本网址这很好用,但我怎样才能获得组织的项目?我是否必须使用api/v1/organization/:orgId/project等基本网址创建新模型?

我该怎么做?

我希望你能理解我想说的话,感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

var ProjectModel = Backbone.Model.extend({
   initialize: function(attrs, options) {
       if( options && options.organizationId){
          this.urlRoot = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
       }
   }
});

var ProjectCollection = Backbone.Collection.extend({
   initialize: function(models, options) {
       this.url = 'example.com/api/v1/organizations/' + options.organizationId + '/projects';
   },
});

// fetch one single project, not in a collection
var model = new ProjectModel({id: 4}, {organizationId: 7});
model.fetch();

// fetch all projects
var collection = new ProjectCollection(null, {organizationId: 7});
collection.fetch();

当模型在集合中时,它不需要urlRoot,因为Backbone将使用模型集合的url作为基础。