我刚刚开始使用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条目。但是,我想处理条目的小焦点列表
var focusList = ['們','火山口','火'];
我想从我的较大(~1000个条目)JSON字典中选择相应的数据。
如何根据我的focusList更改或制作变量{{#oral}}和{{/口}},以便我可以使用正确的数据打印我的模板?
模板中是否存在某些变量:
<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)]]
答案 0 :(得分: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)获取整个条目列表,以从整个列表中打印随机条目:
//1. Get and create the list of all keys
var focusList = Object.keys(myBigJSON);
最后,而不是随机化和循环,可能会重复某些条目,您可以 shuffle the given list和iterate the shuffled list systematically系统地打印每个项目。 < / p>