0

我有一组从基本数据开始的用户模型:

[
 {'_id': 1, 'username': 'Jamie', 'image': 'jamie.jpg'},
 {'_id': 2, 'username': 'Andrew', 'image': 'andrew.jpg'},
 {'_id': 3, 'username': 'Kerry', 'image': 'kerry.jpg'}
];

但是当用户单击集合模型视图时,我会将更多数据加载到模型中,这样我就可以创建数据的配置文件视图:

{
 '_id'      : 1,
 'username' : 'Jamie',
 'image'    : 'jamie.jpg',
 'age'      : 21,
 'country'  : 'UK'
};

我已经对其进行了设置,以便在加载完整的配置文件数据时不会再次获取它以保存 GET 请求。

但是,我在主用户​​视图上有一个刷新按钮,所以当我刷新数据时,所有加载的配置文件数据都消失了,我需要发出 GET 请求才能取回信息。

我想知道我将如何解决这个问题。

更多细节:

刷新按钮的目的是添加新的在线用户。我想要这个按钮,所以想要查看新数据的用户将使用它而不是刷新整个页面。

擦除加载数据的问题是当用户返回个人资料时(这会发生很多,因为我要添加在每个个人资料上聊天的功能,这需要用户在该用户个人资料上)有一个不必要的GET 请求,因为数据之前已经在用户会话中加载。

4

1 回答 1

1

运行.fetch({add:true})会避免覆盖现有模型,但会留下重复的模型。要清除重复模型并将新模型添加到集合中,您需要结合.fetch({add:true})自定义parse()函数:

parse: function(response) {

  var client_ids = _.map(allUsers,function(user){ return user.get('id'); });

  response = _.filter(response,function(user){
    // true if user is not already in collection
    return _.indexOf(client_ids,user.id) < 0; 
  });

  return response;
}

我现在没有任何方法可以测试这个,所以请尝试一下,让我知道它是否有效。

于 2012-06-25T15:33:31.003 回答