2014-04-01 36 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,則切換)