1

长期 Rails 开发人员,骨干菜鸟。

在我的 Rails 模型中,一个项目有很多任务,一个任务属于一个项目。标准的东西。

试图在集合中获取项目的任务 json。

ExampleApp.Collections.Tasks = Backbone.Collection.extend({
  url: '/projects/<dynamic_id>/tasks',
  model: ExampleApp.Models.Task
});

到目前为止,我看到的每个示例都将 url 引用为 /tasks。我想将项目 ID 传递给集合以获取该项目任务。

我检查了Backbone Relational但不确定最好的解决方案是什么。

干杯

4

2 回答 2

2

我强烈建议使用 Backbone-Relational 而不是自己破解关系。从个人经验来看使用 Backbone-Relational 的原因:

  • 创建前向和后向关系,因此您可以获得与项目相关的所有任务,或任务所属的项目
  • 易于序列化和自动反序列化。也就是说,您给它一个 JSON,它会构建所有模型及其关系。非常便利。
  • 您的模型保持独立定义,并且可以使用标准的 Backbone 东西来保存/获取,而无需任何额外的工作。
  • 它还可以很好地与各种 Backbone 扩展(例如MarionetteioBind/ioSync )配合使用
于 2012-09-15T00:08:44.720 回答
1

一种方法是将url定义为一个函数并在 fetch() 之前设置你的 project_id

ExampleApp.Collections.Tasks = Backbone.Collection.extend({
    model: ExampleApp.Models.Task

    url: function() {
        return 'projects/'+this.project_id+'/tasks';
    },

    setProjectId(project_id) {
        this.project_id = project_id;
        this.fetch();
    }
});
于 2012-09-14T22:45:03.623 回答