2012-04-23 19 views
0

是否有任何优雅的方式来完成由字符(逗号,正斜杠等)分隔的值列表?使用小胡子输出以字符分隔的值

罗伯,乔恩,丹,保

我使用ICanHaz JavaScript实现胡子语法。

<script id="nameTemplate" type="text/html"> 
    <span>Name {{#names}}{{.}} {{/names}}</span> 
</script> 

但是这会给不正确的结果

罗伯,乔恩,丹皮,保罗,

回答

1

AFAIK存在这样的功能没有建立,所以你可以做这样的:

模板:

<script id="nameTemplate" type="text/html"> 
    <span>Name 
     {{#names}} 
     {{name}}{{^last}},{{/last}}        
     {{/names}}</span> 
</script> 

脚本:

var namesAsArrayOfObjects = { 
    "names": [ 
     {"name": "Rob"}, 
     {"name": "John"}, 
     {"name": "Dan", "last": true} 
    ]  
}; 

var user = ich.nameTemplate(namesAsArrayOfObjects); 
$('#output').append(user);​ 

结果是在这里:http://jsfiddle.net/alexpetrov/VS2jQ/

另一种解决方案,对我的口味那么优雅:

<script id="nameTemplate" type="text/html"> 
    <span>Name   
     {{#names}}{{#trimed}}{{.}}{{/trimed}}{{/names}} 
     </span> 
</script> 

<div id="output"></div> 
var namesAsArrayOfStrings = {  
    "_counter": 1, 
    "names": ['Rob', 'John', 'Alice'], 
    "trimed": function() {    
     return function(text, render) {        
      var text = render(text) + 
(namesAsArrayOfStrings._counter != namesAsArrayOfStrings.names.length ? "," : ""); 
      namesAsArrayOfStrings._counter++; 

      return text;    
     } 
    } 
}; 

var user = ich.nameTemplate(namesAsArrayOfStrings); 

$('#output').append(user);​ 
+0

哇,伟大的答案亚历克斯!我有点担心没有内置的解决方案。我想我会使用你的第一个解决方案。谢谢! – Tx3 2012-05-06 12:11:57