2012-04-23 87 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