0

mustache.jsを使い始めたばかりで、jsonディクショナリ、htmlテンプレート、mustache.jsスタートアップコードを使用して全体を挿入しています。私のhtml-mustacheテンプレートは次のようなものです。

<script id="tpl" type="text/html">
    <div class="body">
        <p>{{口.zht}}</p>
        <p>{{口.sam.pyn}}</p>
        <p>{{口.sam.fra}}</p>
    </div>
</script>

与えられた既存のエントリ'口'を持つ私のテストケースでは、それは機能します(1)。しかし、MustacheはすべてのJSONエントリを反復するように設計されているようです。ただし、エントリの小さなfocusListで作業したい

var focusList = ['們','火山口','火'];

より大きな(〜1000エントリ)JSONディクショナリから対応するデータを選択したいと思います。

focusListに従って変数{{#口}}と{{/口}}を変更または作成して、正しいデータでテンプレートを印刷するにはどうすればよいですか?

テンプレートには次のような変数がありますか?

<script id="tpl" type="text/html">
    <div class="body">
        <p>{{{{entry}}.zht}}</p>
        <p>{{{{entry}}.sam.pyn}}</p>
        <p>{{{{entry}}.sam.fra}}</p>
    </div>
</script>

そしてJSで私は追加します:

var entry = focusList[Math.floor(Math.random() * focusList.length)]]

4

1 に答える 1

2

解決策:キーの小さなリストが与えられた場合、より大きなJSONデータから関連するエントリを口ひげで印刷します。

//1. Suggest a smaller custom list of keys existing in the larger data. 2. Randomize.
var focusList = ['們','火山口','火'];
var randomKey = focusList[Math.floor(Math.random() * focusList.length)];
//3. variable + Template + variable. 4. printing.
var template = ('{{#'+ randomKey +'}}'+ $('#tpl').html() +'{{/'+randomKey+'}}'); // as {{#火}} ... {{/火}}
var output = Mustache.render(template, myBigJSON);
$('#main').append(output)

または、 1: Object.keys(2)を使用してエントリの全リストを取得し、WHOLEリストからランダムなエントリを出力することもできます。

//1. Get and create the list of all keys
var focusList = Object.keys(myBigJSON);

最後に、一部のエントリを繰り返す可能性のあるランダム化とループではなく、指定されたリストをシャッフルしシャッフルされたリストを体系的に繰り返して、各アイテムを体系的に印刷することができます。

于 2013-02-06T09:12:31.177 に答える