2016-04-23 19 views
0

Ich möchte Vorlagen mit underscorejs rendern.underscorejs: intelligentere Liste Rendering mit _Each oder eine Alternative

Dieser Code

var _ = require('underscore'); 
var tpl = 'Hello <% _.each(names, function(name) { %><%= name %>, <% }); %>!'; 
var compiled = _.template(tpl); 
var data = { 
    names: ['Marissa','Bill','Larry','Steve'] 
}; 
var result = compiled(data); 

produziert:

=> "Hello Marissa, Bill, Larry, Steve, !" 

Nun, stimmt das Ergebnis nicht klug aussehen.

Ich muss verlangen, wenn name nicht das letzte Element ist, dann Ausgang „“, so kann ich auf das Ergebnis:

"Hello Marissa, Bill, Larry, Steve!" 

Wenn ich abfragen kann, wenn der Name der vorletzten ist Ich kann erreichen:

"Hello Marissa, Bill, Larry and Steve!" 

Wie kann ich zu diesem Ergebnis kommen?

Antwort

0

ich es gelöst:

Hello <% var n=names.length-1; _.each(names, function(name,i) { %><%= name %><% if(i<n) %>, <% }); %>! 

Ergebnisse in

=> "Hello Marissa, Bill, Larry, Steve!" 

und

Hello <% var n=names.length-2; _.each(names, function(name,i) { %><%= name %><% if(i<n) %>, <% if(i==n) %> and <% }); %>! 

Ergebnisse in

=> "Hello Marissa, Bill, Larry and Steve!"