我需要我的Backbone.Collection.extend()
內的兩個url
屬性,因爲如果一個集合是fetched
那麼我需要使用特定url
如果集合獲得一個新的模型,然後我想改變url
檢查骨幹網是否已被提取或更改?
module.exports = MessagesCollection = Backbone.Collection.extend({
initialize: function(models, options) {
this.id = options.id;
},
url: function() {
if (fetch method is called) {
return '/api/messages/' + this.id;
} else {
// here if a model is being added?
return '/api/messages'
}
},
model: MessageModel
});
原因這是因爲我只想根據用戶從服務器上拉下模型。
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');
}
});
}
});
當用戶在應用程序內創建新模型時,我希望它進入主集合?
這是否意味着我應該創建一個基於主集合的子集合?
編輯:
我創建這個樣子的其他地方的應用window.App.data.messages.create(Message);
我想也許我可以寫類似
var me = new MeModel();
me.fetch({
success: function(response) {
App.data.me = me;
var messages = new MessagesCollection([], { id: response.get('user_id') });
var allMessages = new MessagesCollection();
messages.fetch({
success: function() {
App.data.messages = messages;
App.data.allMessages = allMessages;
App.core.vent.trigger('app:start');
}
});
}
});
然後創建window.App.data.allMessages.create(Message);
>這聽起來像它可能會導致問題IDK有什麼想法?
編輯:
以上的工作,但我不得不創建一個新的Backbone.Collection.extend()
傳球同樣的模式,但只寫它像
var Backbone = require('backbone'),
MessageModel = require('../models/message');
module.exports = AllMessagesCollection = Backbone.Collection.extend({
model: MessageModel,
url: '/api/messages'
});
因此,讓我真正打破了這個問題了,是這樣的解決方案有問題。做這個的最好方式是什麼?我能想到的最糟糕的事情就是帶寬,使用這種方法我會不斷地發送請求!
感謝現在開始測試吧... –
好它的工作原理謝謝...我知道我需要重寫的東西,我不知道當你在'Backbone.Collection.extend'中創建一個方法時,你重寫了默認方法。酷學到了一些東西 –
看着'create'方法,它看起來像胡言亂語,希望我能推動自己去理解它......但是,幹得好,你怎麼知道這個數字?你看看backbone.js源代碼嗎? –