2014-04-01 94 views
1

简介:多个Backbone.js收藏选项?

在node.js中建立并表示在后台,我发送res.json(details)包含用户的会话信息localhost:3000/me路线。

因此,在客户端我可以使用特定的用户,例如在客户端初始化我写这样的代码。

var me = new MeModel(); 
me.fetch({ 
    success: function(response) { 
     App.data.me = me; 
     var messages = new MessagesCollection([], { id: response.get('user_id') }); 
     messages.fetch({ 
      success: function() { 
       App.data.messages = messages; 
       App.core.vent.trigger('app:start'); 
      } 
     }); 

    } 
}); 

你看我取me模型,并使用在MessagesCollection来过滤消息。


问:

在我MessagesCollection这样我通过选项。

module.exports = MessagesCollection = Backbone.Collection.extend({ 
    initialize: function(models, options) { 
     this.id = options.id; 
    }, 
    url: function() { 
     return '/api/messages/' + this.id; 
    }, 
    model: MessageModel, 
    //url: '/api/messages' 
}); 

使用var messages = new MessagesCollection([], { id: response.get('user_id') });

我的问题是,当别的地方我跑window.App.data.messages.create(Message);这个要张贴到/api/messages/:id当我想张贴到定期收集时,这是伟大的获取所需的车型?

理论:

所以,很显然,我会说最好的办法是重新考虑我怎么在获取方法筛选模型。

所以基本上以简化这个问题,我需要在.fetch()收集过滤GET ...并在.create()POST

没有设定过滤器BTW我使用的提线木偶,也许这可以帮助的东西?

回答

0

model.url()返回模型资源 在服务器上的相对URL。如果您的模型位于其他地方 ,请使用正确的逻辑重写此方法。默认情况下,生成URL为 的表单为:“[collection.url]/[id]”,但如果考虑到模型的集合不应该是 ,则可以覆盖 指定明确的urlRoot。

委托给Collection#url来生成URL,所以请确保您已经定义了您的 或者urlRoot属性,如果此类 的所有模型共享一个公共根URL。 ID为101的模型,存储在主干网 中。收集与 “/文件/ 7 /笔记”,一个URL可以具有 此URL: “/文件/ 7 /笔记/ 101”

http://backbonejs.org/#Model-url

所以,你可以在MeModel定义方法的网址和在那里生成url(如果没有其他用户 - 您可以返回字符串“/ me”或根据模型属性生成(例如,如果模型有id,则切换)