Suchen Sie eine Backbone.js-Ansicht, wenn Sie das Modell kennen?
Auf einer Seite, die Backbone.js verwendet, ist eine Sammlung an eine Ansicht gebunden (RowsView
schafft eine<ul>
), die Unteransichten erstellt (RowView
schafft<li>
) Für jedes Modell in der Sammlung gibt es ein Problem beim Einrichten der Inline-Bearbeitung für diese Modelle in der Sammlung.
Ich habe eine erstelltedit()
Methode auf derRowView
Ansicht, die das ersetztli
Inhalt mit einem Textfeld, und wenn der Benutzer drückttab
Während ich mich in diesem Textfeld befinde, möchte ich das auslösenedit()
Methode der nächsten Ansicht in der Liste.
Ich kann das Modell des nächsten Modells in der Sammlung bekommen:
// within a RowView 'keydown' event handler
var myIndex = this.model.collection.indexOf(this.model);
var nextModel = this.model.collection.at(myIndex+1);
Die Frage ist jedoch, wie Sie die Ansicht finden, die diesem Modell zugeordnet ist. Das ElternteilRowsView
In der Ansicht wird kein Verweis auf alle untergeordneten Ansichten gespeichert. es istrender()
Methode ist nur:
this.$el.html(''); // Clear
this.model.each(function (model) {
this.$el.append(new RowView({ model:model} ).render().el);
}, this);
Muss ich es neu schreiben, um ein separates Array von Zeigern auf alle zu erhalten?RowView
Ist es darunter? Oder gibt es eine clevere Möglichkeit, die Ansicht zu finden, an die ein bekanntes Modell angehängt ist?
Hier ist eine jsFiddle des ganzen Problems:http://jsfiddle.net/midnightlightning/G4NeJ/