2012-03-26 3 views
0

Я использую index.jade, чтобы показать:Как вы создаете коллекцию в обратном порядке, используя партитуры/коллекции expressJS?

!=partial('_blogPost.jade', blogPost) 

и _blogPost.jade:

div.row-fluid 
    div.span2.sider 
     h4.date 
      #{blogPost.addedOn.getDate()}/#{blogPost.addedOn.getMonth() + 1} 
      |#{blogPost.addedOn.getFullYear()} 
     h3 
      #{blogPost.type} 
    div.span9.post 
     h2 
      a(href="#{blogPost.url}") !{blogPost.title} 
     p !{blogPost.body} 

Довольно стандартный blogrolling материал. Используя стандарт цикла, что я ищу будет:

for(var i = blogPost.length-1; i >= 0; i --){ 
blogPost[i].body 
etc... 
} 

Проблема заключается в том, как вы делаете коллекция отображаться в обратном порядке, используя expressJS Partials/коллекции?

+1

Не могли бы вы просто сказать 'blogPost.reverse()' перед тем, как использовать его в файле шаблона ?! – pkyeck

+0

На самом деле я понятия не имел, что существует функция reverse(). Я гугл в течение полутора часов, но искал нефрит/выразительный способ решить эту проблему. Можете ли вы написать это как ответ, чтобы я мог отметить его как правильно? Все прошло отлично. –

ответ

2

вы можете просто сказать

blogPost.reverse(); 

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

+3

Правда - обратите внимание, что 'Array.prototype.reverse' будет менять массив на место и таким образом мутирует массив. Если это не то, что вы хотите, вы можете создать копию и отменить это с помощью 'blogPost.slice (0) .reverse()'. –

0
each statement in debate 
    p(class='message')= statement.body 

Может быть написан с отдельными дефисами перед javascript, который вы хотите вставить. Не забудьте закрыть кронштейны!

- var i= debate.length; while (i--) {; message = debate[i]; 
    p(class='message')= statement.body   
- } 

Я разместил два решения, потому что знаю как работу, так и не уверен, что лучше.

1

Поднимая этот вопрос зомби из мертвых ...

each statement in debate 
    p(class='message')= statement.body 

Может быть написано с одиночным дефисом перед JavaScript вы хотите вставить. Не забудьте закрыть кронштейны!

- for (var i= debate.length-1, message= debate[i]; i--; message = debate[i]) { 
    p(class='message')= statement.body 
- } 

Я разместил два решения, потому что знаю, что оба работают, но не уверены, что лучше.