2011-07-30 26 views
7

Jestem trochę zmieszany w templowaniu przy użyciu szkieletu z jadesem/podkreślnikiem.Backbone.js Jade i zapętla się nad modelem

Mam model szkieletowy z kilkoma tablicami i nie wiem, jak renderować atrybuty tablicy. Mogłabym przenieść je do osobnego widoku kolekcji kręgosłupa &, ale w tym przypadku wydaje się to przesadą.

Śledziłem this blog post on using backbone with jade i dodaje następujące do mojego pliku szkieletowej

_.templateSettings = { 
     interpolate : /\{\{(.+?)\}\}/g 
    }; 

który pozwala mi uczynić model atrybutów w tym Manor:

 //in my JavaScript 
     this.template = _.template($("#some-template").html()); 

     //in my .jade template 
     input.text(type='text', name="name", value='{{name}}') 

co chcę pracować na to, jak wykonaj prostą pętlę nad jedną z tablic w modelu. na przykład

- for (var child in children) 
     {{child}} 

ale jestem zupełnie zagubiony poprawnej składni, gdzie zaczyna jade i podkreślenia przejmuje itd. Dziękuję.

Odpowiedz

5

Nie można używać jadeitu w przeglądarce (prawdopodobnie prawdopodobnie technicznie, ale nie jest to powszechne w przypadku szkieletu, a nie podkreślenia). Będziesz używać szablonów podkreślenia. The docs on _.template pokazują, że można ocenić javascript i użyć metody _.each do zapętlenia atrybutów tablicy modelu.

To będzie wyglądało tak w funkcji widoku twojego render widoku. Będziesz chciał buforować funkcję szablonu jako atrybut twojego widoku pod kątem wydajności, ale mam to tutaj wstawione dla uproszczenia. Załóżmy na przykład, że masz model Car z listą drivers jako tablicą nazw sterowników.

var template = "<% _.each(model.drivers, function(name) { %> <li><%= name %></li> <% }); %>"; 
return _.template(template, this); 

Należy pamiętać, że trzeba będzie zapewnić składni evaluate w ustawieniach szablonu jako przykład ten obejmuje zarówno styl interpolować (<%=) oraz styl oceniania (<%) z szablonu znaczników. Obecnie masz po prostu interpolację w stylu wąsów, a to nie wystarcza.