Ist es möglich, eine Vorlage innerhalb einer Vorlage verschachtelt zu haben und über Backbone-Ansicht darauf zuzugreifen?
Zum Beispiel habe ich View1 mit Template1 und View2 mit Template2. Template2 muss sich tatsächlich in einem DIV innerhalb von Template1 befinden. Ich lege den DIV-Container für template2 in template1 mit der entsprechenden ID ab, aber es wird nicht angezeigt, wenn die Seite gerendert wird. Wenn ich den Template2-div-Container aus Template1 entferne und ihn einfach in den Seitenkörper lege, funktioniert er einwandfrei.
Sie fragen sich also, ob das möglich ist, oder ob ich die Ansichten / Modelle usw. verschachteln muss, damit das funktioniert?
Die Daten in Template2 sind technisch nicht mit Template1 verknüpft und müssen nur an einer Position auf der Seite angezeigt werden, die in Template1 eingebettet ist.
Eine weitere nützliche Option, wenn Sie Template2 mehrfach innerhalb von Template1 einfügen müssen, z. B. als <li>
elements in einem <ul>
, ist das Übergeben einer Template2-Funktion an Template1. (Aus Rico Sta Cruz 'Backbone Patterns .)
Der typische Weg, den ich verstehe, ist, Ansichten als vollständige Objekte zu betrachten, die Sie ineinander einbetten können. Nehmen wir an, Sie haben zwei Ansichten, ViewA und ViewB. Der folgende Code zeigt, wie Sie ViewB in ViewA anfügen können.
%Vor%Sie können sich vorstellen, wie ViewB verwaltet wird (es Eigenschaften zuweisen oder was auch immer) oder verschiedene Konstruktorargumente an jede ViewB-Instanz übergeben.
Eine schlankere Lösung ohne die Notwendigkeit für jQuery append()
oder das zusätzliche SubView-Objekt mit einem doppelten jQuery-Bereich besteht darin, die Unterstreichungsmethode strikt vorzulesen / vorzukompilieren und die Unteransicht als Zeichenfolge einzufügen, indem ein innerer verwendet wird Kommentar-Tags in Ihrer Hauptvorlage.
Dies ist besonders nützlich, wenn Ihre Vorlage keine Konstante ist und von einer Eigenschaft des aktuellen Bereichs abhängt.
Beachten Sie, dass Sie für den Umfang dieser Frage das View2-Modell an die Komponente übergeben müssen.
Tags und Links javascript jquery backbone.js templates underscore.js