Javascript Backbone.js中的模型

Javascript Backbone.js中的模型,javascript,ruby-on-rails,json,rest,backbone.js,Javascript,Ruby On Rails,Json,Rest,Backbone.js,我有一个关于处理我的模型的问题。我弄糊涂了。当我加载页面时,我从rails获得一个JSON字符串,其中包含“事件”,这些事件依次有一个用户、多个参与者、多个付款和多个评论,这些评论依次有一个用户,付款有多个用户和一个用户。评论和付款也有一个指向家长的事件 Events User Participants(users) Payments User Users Event Comments User Event 好的,所以问题是:我是否应该将

我有一个关于处理我的模型的问题。我弄糊涂了。当我加载页面时,我从rails获得一个JSON字符串,其中包含“事件”,这些事件依次有一个用户、多个参与者、多个付款和多个评论,这些评论依次有一个用户,付款有多个用户和一个用户。评论和付款也有一个指向家长的事件

Events
  User
  Participants(users)
  Payments
    User
    Users
    Event
  Comments
    User
    Event
好的,所以问题是:我是否应该将所有内容都作为一棵树加载,并且到处都有完整的属性:

"events": {
  "id": "event_1",
  "user": {
    "id": "user_1", "name":"name"
  }, "participants": [
    {"id": "user_1", "name":"name"},
    {"id": "user_2", "name":"name"}
  ], "payments": [{
      "id":"payment_1",
      "user": {
        "id": "user_1", "name":"name"
      },"users": [
        {"id": "user_1", "name":"name"},
        {"id": "user_2", "name":"name"}
      ], "event": {root event object}  
    }], "comments": [{
      "id": "comment_1",
      "user": {
        "id": "user_1", "name":"name"
      }, "event": {root event object}  
    }]
  }
}
然后创建事件模型,创建新的评论、付款和用户,并将其分配给自己的事件,或者最好将每个事件、用户付款和评论加载到单独的变量中,然后使用该变量获取模型。 这很难解释,所以请随便问我是否需要澄清一些事情


结论:我应该让事件模型来处理所有嵌套对象的创建,还是有更好的方法来处理这个问题,并且可以更全面地访问模型?

我不会。我将通过对象特定的调用使rails方面尽可能简单。是的,这确实意味着您将进行更多调用以获得完整信息,但最终它将更易于维护,并且对一个对象的更改不需要对其他对象进行级联更改。例如,如果您需要在名称的顶部添加其他用户属性,该怎么办


换句话说,事件就是事件对象。它通过id引用其他对象。这些对象中的每一个都有自己的模型类和相应的API URL。因此,如果需要用户对象(通过id),则需要从API中获取该用户对象。

体系结构是主观的,但我将这样做-

3个基本型号

User = Backbone.Model.extend({
    defaults : {
        name : ""
    }
})
Payment = Backbone.Model.extend({
    defaults : {
        user : new User(),
        users : new UserList(),
        event : ""
    }
})
Comment = Backbone.Model.extend({
    defaults : {
        user : new User(),
        event : ""
    }
})
UserList = Backbone.Collection.extend({
    model : User
})
PaymentList = Backbone.Collection.extend({
    model : Payment
})
CommentList = Backbone.Collection.extend({
    model : Comment
})
3个系列

User = Backbone.Model.extend({
    defaults : {
        name : ""
    }
})
Payment = Backbone.Model.extend({
    defaults : {
        user : new User(),
        users : new UserList(),
        event : ""
    }
})
Comment = Backbone.Model.extend({
    defaults : {
        user : new User(),
        event : ""
    }
})
UserList = Backbone.Collection.extend({
    model : User
})
PaymentList = Backbone.Collection.extend({
    model : Payment
})
CommentList = Backbone.Collection.extend({
    model : Comment
})
一个事件模型

Event = Backbone.Model.extend({
    defaults : {
        user : new User(),
        participants : new UserList(),
        payments : new PaymentList(),
        comments : new CommentList()
    }
})
如果在上面的示例中使用JSON初始化事件对象,它应该可以正常工作。将来,如果您希望将用户分离到不同的API,那么这段代码也应该支持这一点。如果以后确实希望使组件对象全局可用,则可以从用户对象获取组件对象,即window.user=myEvent.get(“用户”)


希望这对您有所帮助:)

您可能希望了解如何使用并为用户、参与者、事件等创建一个模型。。。在RubyonRails中,您可能已经以类似的方式处理它们了