Ich habe versucht, meine backbone.js-Anwendung mit einer vorhandenen Codeigniter-API zu verbinden. Ich schaute auf das Todos-Beispiel auf GitHub und baute von dort aus auf. ich das Überschreiben der findAll-Funktion, die auf ‚lesen‘ aufgerufen wird, und ich versuche, die Seiten zu bekommen und wieder auf die Abruffunktion zurück:Wie gehe ich mit der Serverantwort um, wenn ich die Synchronisierungsfunktion in backbone.js überschreibe
findAll: function() { console.log ('Synch - finde alle');
var url = "/folio/get/8";
var data = '';
var postmethod = 'GET';
$.ajax({
url : url,
type : postmethod,
async: false,
data: data,
success: function(response)
{
console.debug("response",response);
console.debug("response.pages", response["pages"]);
return _.values(response["pages"]);
}
});
}
Die API so etwas wie dieses gibt - Ausgabe über die console.debug ("Antwort", Antwort):
{
"id": "8",
"facebook_id": "123456789",
"title": "title",
"access_date": null,
"rating_avg": "0",
"pages": [
{
"id": "6",
"picture1": {
"id": "3",
"tag": "1",
"tip": "Crazy",
"facebook_picture_id": "1239102391023"
},
"picture2": "28",
"picture3": "29",
"picture4": null,
"picture5": null,
"picture6": null,
"caption1": "caption 1",
"caption2": "caption 2",
"sequence": "2",
"folio": "8",
"ts": "2012-04-10 15:13:23",
"template": "#page-template-2"
},
{
"id": "5",
"picture1": "24",
"picture2": "25",
"picture3": "26",
"picture4": null,
"picture5": null,
"picture6": null,
"caption1": "caption 1",
"caption2": "caption 2",
"sequence": "4",
"folio": "8",
"ts": "2012-04-10 15:13:23",
"template": "#page-template-2"
}
]
}
aber dann console.debug ("response.pages ", response [" pages "]) druckt" undefined "aus. Warum macht es das?
Vielen Dank im Voraus!
-------------------- bearbeiten ---------------------
Danke für deine Antwort. Der Tipp, dass ich nur aus dem Modell Ajax-Anrufe tätigen kann, ist sehr hilfreich. Die Sache ist, dass ich mehrere Seiten in einem Pagelist-Sammlung zu bekommen versuche:
$(function(){
// Page Collection
// ---------------
var PageList = Backbone.Collection.extend({
model: Page,
localStorage: new Store("wickes-backbone"), // this to get hold of my overwritten localstorage file - it is not actually a localStorage
nextOrder: function() {
if (!this.length) return 1;
return this.last().get('order') + 1;
},
comparator: function(page) {
return page.get('order');
}
});
window.Pages = new PageList;
});
so innerhalb der AppView intitialize Funktion I
nennePages.fetch();
, die alle Seiten füllt und aktualisiert die Ansicht. Ich bin mir nicht sicher, wie ich das im Modell selbst machen soll.
Können Sie Ihre Ansicht/Ihr Modell posten? –
beim Ändern des Codes in: console.debug ("response.pages", response.pages); die Konsole druckt: response.pages so kein anderes Ergebnis – Dine