Angesichts einer Seite, die Backbone.js verwendet, um eine Collection an eine Ansicht gebunden zu haben (RowsView
, erstellt eine <ul>
), die Unteransichten erstellt (RowView
, erstellt <li>
) für jedes Modell in der Sammlung, habe ich ein Problem einrichten Inline-Bearbeitung für diese Modelle in der Sammlung.Suchen Sie eine Backbone.js Ansicht, wenn Sie das Modell kennen?
Ich habe eine edit()
Methode auf der RowView
Ansicht, dass den li
Inhalt mit einem Textfeld, und wenn der Benutzer drückt tab
während in diesem Textfeld, ich mag löse die edit()
Methode der nächsten Ansicht in dem ersetzt Liste.
kann ich das Modell des nächsten Modells in der Sammlung erhalten:
// within a RowView 'keydown' event handler
var myIndex = this.model.collection.indexOf(this.model);
var nextModel = this.model.collection.at(myIndex+1);
Aber die Frage ist, wie die Ansicht zu finden, die zu diesem Modell angeschlossen ist. Die übergeordnete Ansicht RowsView
View enthält keinen Verweis auf alle untergeordneten Ansichten. es render()
Methode ist einfach:
this.$el.html(''); // Clear
this.model.each(function (model) {
this.$el.append(new RowView({ model:model}).render().el);
}, this);
Benötige ich es neu zu schreiben, ein separates Array von Zeigern auf alle RowView
s es unter ihm hat zu halten? Oder gibt es eine clevere Möglichkeit, die View zu finden, an die ein bekanntes Modell angehängt ist?
hier ein jsFiddle des ganzen Problems: http://jsfiddle.net/midnightlightning/G4NeJ/