Json 将mustache.js与编号数组一起使用
我的JSON数据源如下所示:Json 将mustache.js与编号数组一起使用,json,mustache,Json,Mustache,我的JSON数据源如下所示: {"1":{ "name":"One", "color":"red" }, {"2":{ "name":"Two", "color":"green" } 我正在尝试使用mustache.js循环浏览这些记录 var model = [{"1":{"name":"One","color":"red"},{"2":{"name":"Two","color":"green"}]; var template = '<ul> {{
{"1":{
"name":"One",
"color":"red"
},
{"2":{
"name":"Two",
"color":"green"
}
我正在尝试使用mustache.js循环浏览这些记录
var model = [{"1":{"name":"One","color":"red"},{"2":{"name":"Two","color":"green"}];
var template = '<ul> {{#.}} <li>{{name}} -- {{color}} </li> {{/.}} </ul>';
var html = Mustache.to_html(template, model);
console.log(html);
var模型=[{“1”:{“名称”:“一”,“颜色”:“红色”},{“2”:{“名称”:“二”,“颜色”:“绿色”}];
var template='{{{}.}- {{{name}--{{color}}
{{/}
;
var html=Mustache.to_html(模板、模型);
log(html);
但我不知道如何获取名称和颜色。有什么想法吗
var model = [
{"1":{"name":"One","color":"red"}},
{"2":{"name":"Two","color":"green"}}
];
var model4view = {dots:
model.map(function(obj){
var v; for (k in obj) {v = obj[k];}; return v; })};
template = "'<ul> {{#dots}} <li>{{name}} -- {{color}} </li> {{/dots}} </ul>'";
var html = Mustache.to_html(template, model4view);
[编辑]
如果还需要输出与每个项目关联的数字,可以使用映射功能:
function(v){
for (var property in v) {
o = v[property];
o['id'] = property;
return(o);
}});
这样,可以在模板中使用编号作为{{id}
在这里,您可以尝试使用解决方案。如果您知道模型中的关键点看起来总是像1,2,3,…,那么这里是最简单的解决方案:
var model = [{"1":{"name":"One","color":"red"}},{"2":{"name":"Two","color":"green"}}];
var i, len = model.length;
for (i=0; i<len; i++) {
model[i] = model[i][i+1];
}
var模型=[{“1”:{“名称”:“一”,“颜色”:“红色”}、{“2”:{“名称”:“二”,“颜色”:“绿色”}];
var i,len=模型长度;
对于(i=0;i来说,如果您有这样的对象数组,并使用一个简单的{{{{{{}.}{{{name}}--{{color} {{/}
循环,就会容易得多:
var myCars =
[
{"index":1,"name":"One", "color":"red" }},
{"index":2,"name":"Two", "color":"green" }}
];
但是,让我们努力破解它,如果您不想更改数组内容或遍历数组,此巫术可能会对您有所帮助:
示例如下:
您的HTML将是:
<div id="carsContainer">
</div>
<script id="carsTemplate" type="text/plain">
<ul>
{{#cars}}
{{#cars.getNextCar}}
<li>{{name}} -- {{color}}</li>
{{/cars.getNextCar}}
{{/cars}}
</ul>
</script>
{{{汽车}
{{{cars.getNextCar}
- {{name}}--{{color}
{{/cars.getNextCar}
{{/cars}
请注意,方法getNextCar
将在对象中创建一个迭代器,因此,如果您使用多次,则必须获取一个新的迭代器。或者按照其他建议更改数组内容
另一方面,您可能想看看哪一个更健壮,语法更灵活。只需编辑链接,并展示如何为输出保留项目编号。我将报告一个类似的情况,最终他们会更改数据返回方式,以使mustache模板工作。代码干净简单,但JSON不是.Nam虽然在JS中完全有效,但使用数字来修改变量从来都不是一件好事。您可以轻松删除“1”和“2”,并让代码按照下面的答案工作。如果您没有修改JSON的权限,您可以在将模型传递给d4kris提到的Mustach之前修剪模型。
var myCars =
[
{"1":{ "name":"One", "color":"red" }},
{"2":{ "name":"Two", "color":"green" }}
];
// decorate the array with method supporting the exotic indexing
myCars.getNextCar = function(){
!myCars.i ? myCars.i=1 : ++myCars.i;
return(myCars[myCars.i-1][myCars.i])
};
var template = $("#carsTemplate").html();
$("#carsContainer").html(Mustache.render(template,{cars:myCars}));
<div id="carsContainer">
</div>
<script id="carsTemplate" type="text/plain">
<ul>
{{#cars}}
{{#cars.getNextCar}}
<li>{{name}} -- {{color}}</li>
{{/cars.getNextCar}}
{{/cars}}
</ul>
</script>