Backbone.js Джейд и циклы над моделью - PullRequest
7 голосов
/ 30 июля 2011

Я немного запутался по поводу шаблонов с использованием основы с нефритом / подчеркиванием.

У меня есть базовая модель с парой массивов, и я не уверен, как отобразить атрибуты массива.Я мог бы переместить их в отдельную коллекцию и представление магистрали, но в этом случае это выглядит излишне.

Я следил за этим сообщением в блоге об использовании магистрали с jade и добавил следующее в свой файл магистрали

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

, который позволяет мне визуализировать атрибуты модели в этом поместье:

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

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

я хочу выяснить, как сделать простой цикл над одним из массивов вмодель.например,

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

, но я не совсем понимаю правильный синтаксис, где начинается нефрит, подчеркивание и т. д. Спасибо.

1 Ответ

5 голосов
/ 30 июля 2011

Вы не можете использовать Jade в браузере (ну, вы, вероятно, технически можете, но не так часто использовать с магистралью, в отличие от подчеркивания). Вы будете использовать шаблоны подчеркивания там. Документы по _.template показывают, что вы можете оценить javascript и использовать метод _.each для циклического перебора атрибутов массива вашей модели.

Это будет выглядеть так в функции render вашего представления. Вы захотите кешировать функцию шаблона в качестве атрибута вашего представления для эффективности, но здесь для простоты он встроен. Предположим, например, что у вас есть модель Car со списком drivers в виде массива имен драйверов.

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

Обратите внимание, что вам нужно будет указать синтаксис evaluate в настройках шаблона, так как этот пример включает в себя как стиль интерполяции (<%=), так и стиль оценки (<%) разметки шаблона. В настоящее время у вас просто интерполяция в стиле усов, а этого недостаточно.

...