2012-04-23 4 views
0

値のリストを文字(カンマ、スラッシュなど)で区切って表示する方法はありますか?Mustacheを使用して文字で区切った値を出力する

ロブ、ジョン、ダン、ポール

私は口ひげ構文のICanHaz JavaScriptの実装を使用しています。

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

しかし、これは誤った結果を与えるだろう

ロブ、ジョン、ダン、ポール、

答えて

1

私の知る限りがそのような機能にはビルドがありませんので、あなたがそのよう行うことができます。

テンプレート:

<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

関連する問題