Я новичок в магистрали, и я пытаюсь отправить и получить данные с сервера в формате Json. Это просто не сработает. Вот мой код (BTW, я использую магистральную ауру):Магистральная коллекция fetch not firing
Коллекция
define(['sandbox', '../models/message'], function(sandbox, Message) {
'use strict';
var Messages = sandbox.mvc.Collection({
model: Message,
url: '/messagelist.php',
localStorage: new sandbox.data.Store('messages-backbone-require'),
parse: function(response){
return response.rows;
}
});
return Messages;
});
Модель
define(['sandbox'], function(sandbox) {
'use strict';
var Message = sandbox.mvc.Model({
defaults: {
opened: '',
messageid: '',
phonenumber: '',
numbername: '',
text: ''
},
parse: function(data){
return data;
}
});
return Message;
});
Посмотреть
define(['sandbox', '../models/message', 'text!../templates/incoming_messages.html'], function(sandbox, Message, incomingMessagesTemplate) {
'use strict';
var AppView = sandbox.mvc.View({
widgetTemplate: sandbox.template.parse(incomingMessagesTemplate),
events: {
'click .refresh': 'refresh'
},
initialize: function() {
this.$el.html(this.widgetTemplate);
sandbox.events.bindAll(this);
this.collection.bind('createMessageList', this.createMessageList);
},
createMessageList: function() {
// Will work with the received data here
},
render: function() {
var handle = 'h4';
this.$el.draggable({handle: handle});
this.createMessageList();
},
refresh: function() {
this.createMessageList();
}
});
return AppView;
});
Главная
define(['sandbox', './views/app', './collections/messages'], function(sandbox, AppView, Messages) {
'use strict';
return function(options) {
var messages = new Messages();
new AppView({
el: sandbox.dom.find(options.element),
collection: messages
}).render();
messages.fetch({
data: {
type: 'incoming',
offset: 0,
offsetcount: 25
},
type: 'GET',
success: function() {
console.log(messages.models); // Shows an empty array.
}
});
};
});
У меня проверены журналы, и кажется, что запрос ajax (collection.fetch()) не запускается или не может связываться с сервером. Как я могу это исправить?
Не использует ли локальный накопитель плагин 'Backbone.sync', а не' fetch'? Но это просто выбор. –
@muistooshort, yessir, вопрос OP о 'fetch' не срабатывает, и, не зная, знает ли он, как работает' sync', самый простой способ объяснить причину - разрезать некоторые углы. В связанном ответе объясняется резкое изменение порядка синхронизации. – jevakallio