gpt4 book ai didi

javascript - Backbone.js 中的模型

转载 作者:可可西里 更新时间:2023-11-01 02:22:57 25 4
gpt4 key购买 nike

我对处理我的模型有疑问。我很困惑。当我加载页面时,我从包含“事件”的 rails 中获取一个 JSON 字符串,这些事件依次有一个用户、多个参与者、多个付款和多个评论,这些评论依次有一个用户,而付款有多个用户和一个单用户。评论和付款也有一个事件指向 parent 。

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}
}]
}
}

然后有事件模型,创建新的评论、支付和用户,并将其分配给它自己的事件,或者将每个事件、用户支付和评论加载到单独的变量中,然后使用变量来获取模型。这很难解释,所以尽管问我是否需要澄清一些事情。

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

最佳答案

架构是主观的,但这是我的处理方式 -

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 : ""
}
})

3 个合集

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("user")

希望这有帮助:)

关于javascript - Backbone.js 中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com