Wo bekomme ich die Record ID beim Aufruf von backbone.js destroy

8

Ich habe einen Testcode, mit dem ich gerade versuche, backgrod.js zu finden. Wenn ich den Befehl destroy auf einem Modellobjekt trage, macht das Backbone eine DELETE-Anfrage an meinen Rest-Service. aber, ich kann keine ID sehen, die angibt, welcher Datensatz in den Anfragedaten, der Querystring, Körper oder irgendwo gelöscht wird.

mein Modell hat eine ID-Eigenschaft und ich habe ihm einen Wert von 1 zugewiesen. Gibt es noch etwas, was ich tun muss, um sicherzustellen, dass die ID über den Server weitergegeben wird? Oder gibt es eine andere Möglichkeit, dass ich erkennen soll, welcher Datensatz gelöscht wird?

Bearbeiten - Hier ist der relevante Code:

%Vor%

Wenn ich mir den Debugger anschaue, sehe ich, dass die AJAX-Anfrage gemacht wird, sieht es einfach so aus:

%Vor%

Es scheint keine ID zu sein oder irgendetwas und es gibt keine Post-Daten. Mache ich etwas falsch? Danke.

    
Jason 14.01.2012, 03:58
quelle

2 Antworten

17

Sie sollten das Attribut urlRoot Ihres Modells festlegen und dann Backbone das Konstruieren der DELETE url überlassen:

%Vor%

Dies wird die folgende Anfrage verursachen, wenn accountM.destroy() aufgerufen wird:

%Vor%     
soldier.moth 16.01.2012, 02:05
quelle
1

Backbone.sync sendet das Destroy als einfache Anfrage mit der ID in der URL zurück. Zum Beispiel:

DELETE http://example.com/foos/1

Dies ist das HTTP-Löschen für eine Foo mit einer ID von 1 .

Bei MVC-Webservern wie Rails, ASP.NET MVC und sogar Sinatra und anderen einfachen Servern ist dies ein Parameter, der auf Ihren Server übertragen wird.

Zum Beispiel in Sinatra:

%Vor%

Wie Sie sehen, habe ich in der Route einen Parameter namens :id definiert, und mein Code konnte über die params -Daten darauf zugreifen. Ich habe dann das Foo gefunden, es zerstört und ein leeres JSON-Ergebnis zurückgegeben - was von Backbone auch während eines Destroy benötigt wird.

Ich hoffe, das hilft.

    
Derick Bailey 14.01.2012 13:01
quelle

Tags und Links