如何从“users /:userId / roles”之类的路径获取集合,其中:userId是动态的

时间:2015-06-03 13:38:55

标签: rest backbone.js

Backbone可以按ID获取模型,但如果我想根据资源ID获取集合,例如"api/users/:userId/roles/" :userId是动态的,那该怎么办? 如何在Backbone中实现此功能?我不想为从userModel.roles

获取的集合中的每个模型填充api/users/属性

2 个答案:

答案 0 :(得分:2)

var Roles = Backbone.Collection.extend({
    url: function(){
        var url = '/api/users/' + this.user.id + '/roles';
        return url;
    }
});

这是最低限度,假设您的用户模型是Roles集合中的属性。我会考虑将关系抽象为AssociatedModelAssociatedCollection,或者查看many Backbone plugins available

答案 1 :(得分:1)

许多主干属性可以使用函数而不是字符串,这样可以让您在需要时更灵活。如果您查看documentationurl的示例,您会看到一个示例

// Or, something more sophisticated:

var Notes = Backbone.Collection.extend({
  url: function() {
    return this.document.url() + '/notes';
  }
});

在您的情况下,您可能需要类似以下内容

url: function () {
    //myUserID should probably be coming from your model or somewhere
    return 'api/users/' + myUserID + '/roles/'; 
}