dot.js loop through object

6.5k Views Asked by At

With dot.js template engine how do you loop through an object? In the example data below how do you loop through the "msg" object?

{
    "msg": {
        "1": {
            "a": "a1"
        },
        "2": {
            "b": "b2"
        }
    }
}
2

There are 2 best solutions below

1
CodingIntrigue On BEST ANSWER

From the example on the website, it looks as if you should be able to do:

{{ for(var prop in it) { }}
<div>{{=prop}}</div> <!-- Prints "msg" -->
    {{ for(var msgProp in it[prop]) { }}
    <div>{{=msgProp}}</div> <!-- Prints "1" and "2" -->
        {{ for(var numProp in it[prop][msgProp]) { }}
        <!-- Prints "a: a1" and "b: b1" -->
        <div>{{=prop}}: {{=it[prop][msgProp][numProp]}}</div>
        {{ } }}
    {{ } }}
{{ } }}

However you may want to simplifiy that object a little bit with Javascript first, before passing it to the template in order to make it easier to iterate.

0
yonas On

The best thing to do would be to first convert msg to an array. It's much easier to iterate that way. After that, just use jQuery's $.each().