1

文字 (カンマ、スラッシュなど) で区切られた値のリストを実現するエレガントな方法はありますか?

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

Mustache 構文のICanHaz JavaScript 実装を使用しています。

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

しかし、これは間違った結果をもたらします

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

4

1 に答える 1

2

私の知る限り、そのような機能は組み込まれていないため、次のようにすることができます。

テンプレート:

<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);​
于 2012-05-05T12:32:35.093 に答える