jon*_*atr 11 javascript rest json ruby-on-rails backbone.js
我有一个关于处理我的模型的问题.我很困惑.当我加载页面时,我从包含"事件"的rails获取一个JSON字符串,这些事件又有一个用户,多个参与者,多个付款和多个评论,这些评论又有一个用户,付款有多个用户和一个单个用户.评论和付款也有一个指向父母的事件.
Events
User
Participants(users)
Payments
User
Users
Event
Comments
User
Event
Run Code Online (Sandbox Code Playgroud)
好吧,问题是:我应该把所有东西都加载成树,到处都是完整的属性:
"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}
}]
}
}
Run Code Online (Sandbox Code Playgroud)
然后有事件模型,创建新的评论,付款和用户,并将其分配给它自己的事件,或者将每个事件,用户付款和评论加载到单独的变量,然后使用变量获取更好的主意模特.这很难解释,所以请随意问我是否需要澄清一些事情.
结论:我应该让事件模型处理所有嵌套对象的创建,还是有更好的方法来处理它,并且可以更全面地访问模型?
建筑是主观的,但这是我将如何去做 -
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 : ""
}
})
Run Code Online (Sandbox Code Playgroud)
3收藏
UserList = Backbone.Collection.extend({
model : User
})
PaymentList = Backbone.Collection.extend({
model : Payment
})
CommentList = Backbone.Collection.extend({
model : Comment
})
Run Code Online (Sandbox Code Playgroud)
一个事件模型
Event = Backbone.Model.extend({
defaults : {
user : new User(),
participants : new UserList(),
payments : new PaymentList(),
comments : new CommentList()
}
})
Run Code Online (Sandbox Code Playgroud)
如果在上面的示例中使用JSON初始化事件对象,它应该可以正常工作.将来如果您想将用户分离到不同的API,此代码也应该支持.如果您确实想在以后全局使用组件对象,则可以从用户对象获取它,即window.User = myEvent.get("user")
希望这可以帮助 :)
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |