我有以下情况,我认为处理它的最佳方法是使用Backbone relation
如果有其他解决方案,请纠正我。
我有一个集合(1)和一个模型(2) 收集结果看起来像(3),模型结果如(4)。
最后,视图应如下所示(5)。
我的问题是:
1)可以使用Backbone relation
来处理这种情况吗?
2)如果是,我应该如何重写FeedsCollection
以自动获取UserModel
所需的数据?
(1)
// FeedsCollection
var FeedsCollection = Backbone.Collection.extend({
url: "http://localhost/feeds"
});
(2)
// User Model
var UserModel = Backbone.Model.extend({
url: "http://localhost/user"
});
(3)feedsCollection结果
//feedsCollection.toJSON();
[
{id:1, message: "something one", creator_id: 100},
{id:2, message: "something two", creator_id: 101},
]
(4)userModel结果
userModel = new UserModel({id: 100});
userModel.fetch();
userModel.toJSON(); // {id:100, name: "jhon"}
userModel = new UserModel({id: 101});
userModel.fetch();
userModel.toJSON(); // {id:101, name: "herry"}
(5)最后,观察结果应该是:
[
{message: "something one", creator_id: 100, name: "jhon"},
{message: "something two", creator_id: 101, name: "herry"},
]
答案 0 :(得分:0)
您是否考虑过直接从服务器返回用户名。 所以url“/ feeds”会返回:
[
{message: "something one", creator_id: 100, name: "jhon"},
{message: "something two", creator_id: 101, name: "herry"},
]
如果您只想在消息附近显示用户名,这似乎是一个简单的解决方案。我不知道你的服务器的后端是什么,但我确信这可以有效地完成。
所以回答你的问题是:
1)可以使用Backbone关系来处理这种情况吗?
可能你可以使用插件来解决这种情况,但我不建议引入一个插件来解决这个具体的例子。对我来说,查询服务器的用户模型似乎效率低下,只是为了显示他们的名字。但是在不同情况下这可能是合适的。
无论如何,如果您决定使用插件加载用户模型或没有插件。你必须问一些问题才能弄清楚它是否值得:
总而言之,我仍然认为你直接从服务器返回用户的名字,只有当你需要的名称超过它的名字时才加载特定的用户模型。