6 Stimmen

Wie kann ich den Index eines Elements zu einer Backbone-Sammlung über Fetch hinzugefügt erhalten?

Ich habe eine Backbone-Sammlung. Ich verwende fetch({add:true}) um neue Elemente von meinem Server abzurufen und sie der Sammlung hinzuzufügen.

Ich habe eine Hörerfunktion an die Sammlung gebunden add Veranstaltung. Ich möchte, dass diese Funktion den Index, bei dem das Element der Sammlung hinzugefügt wurde, zu erhalten.

Die Dokumentation von Backbone für Collection.add sagt: "Wenn Sie ein Rückrufer sind, der eine Sammlung anhört "add" Veranstaltung, options.index gibt Ihnen den Index an, bei dem das Modell der Sammlung hinzugefügt wird."

Ich habe die Argumente, die scheinbar an meine Listener-Funktion übergeben werden, in der Konsole protokolliert und sie mir angesehen. Soweit ich das beurteilen kann, ist das erste Argument das hinzugefügte Element, gefolgt von einem temporären Sammlungsobjekt, das erstellt wurde, um es zu speichern, wenn es vom Server zurückkam. Ich habe anscheinend kein Objekt mit einer index Eigentum.

Wie kann ich den Index ermitteln, mit dem das Element der Sammlung hinzugefügt wurde?

8voto

rkofman Punkte 106

Für alle, die dies in Zukunft lesen, HINWEIS: Seit Version 0.9.9 ist options.index nicht mehr gesetzt. Aus dem Changelog:

Um die Leistung von add zu verbessern, wird options.index nicht mehr in der add Ereignis-Rückruf. collection.indexOf(model) kann verwendet werden, um den Index eines Modells bei Bedarf abzurufen.

2voto

nikoshr Punkte 32596

Überprüfen Sie das dritte Argument Ihrer Bindungsfunktion, es sollte die Eigenschaft index enthalten

var c=new Backbone.Collection();
c.bind("add",function(model,collection,opts){
    console.log(opts);
});

c.add({});
c.add({});

Edit : Ich habe gerade Backbone 0.5.3 überprüft und es scheint options.index ist nur in Version 0.9 verfügbar

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X