Backbone belongs_to has_many

时间:2012-09-14 19:01:27

标签: javascript backbone.js ruby-on-rails-3.2 backbone-relational

Longtime Rails Dev,Backbone Noob。

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

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

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

到目前为止,我见过的每个例子都将url引用为/ tasks。我想将项目ID传递给集合以获得项目任务。

我已经检查了Backbone Relational,但不确定最佳解决方案是什么。

干杯

2 个答案:

答案 0 :(得分:2)

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

  • 创建前向和后向关系,这样您就可以获得与项目或任务所属项目相关的所有任务
  • 易于序列化和自动去激活。也就是说,你给它一个JSON,它构建了所有模型及其关系。非常方便。
  • 您的模型保持独立定义,可以使用标准Backbone内容进行保存/获取,无需任何额外工作。
  • 它还可以很好地使用各种Backbone扩展程序,例如MarionetteioBind/ioSync

答案 1 :(得分: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();
    }
});