как использовать для каждого с усами javascript? - PullRequest
8 голосов
/ 21 марта 2012

У меня есть несколько объектов json, а у некоторых из них есть некоторые другие объекты.

Если я оставлю только объект json, в котором нет другого объекта, а затем применю шаблон, все будет хорошо, я получаю в этом случае 3 элемента li.

но если я возьму оригинальный json obj, результаты получатся немного зашиты. Я считаю, что мне нужно сделать each оператор для итерации каждого sub json obj внутри каждого основного

возможно, я немного запутался, так что вот код.

У меня есть некоторые данные JSON, как это:

{
"msg_id":"134",
"message":"Nick",
"comment":[
    {
    "com_id":"9",
    "comment":"test",
    },
    {
    "com_id":"10",
    "comment":"testtt",
    },
    {
    "com_id":"11",
    "comment":"testtttt",
    }]
},
{
"msg_id":"134",
"message":"Nick",
},
{
"msg_id":"134",
"message":"Nick",
}

и я пытаюсь достичь чего-то подобного: Ник

тест

testtt

testtttt

Ник Ник

Я создал такой шаблон:

function messagesTamplate(data)
{
    $.each(data, function(index, obj)
    {
        msg += template.replace( /{{message}}/ig , obj.message );
        if(obj.comment) {
            $.each(obj.comment, function(key, val)
            {
               msg += template.replace( /{{comment}}/ig , val.comment );      
            });
        }

    });

    return msg;
}

тогда я просто добавляю это к главной ул.

спасибо

1 Ответ

26 голосов
/ 21 марта 2012

data необходимо , чтобы быть массивом (см. Вложение [])

var data = [{
  "msg_id": "134",
  "message": "Nick",
  "comment": [{
    "com_id": "9",
    "comment": "test",
  }, {
    "com_id": "10",
    "comment": "testtt",
  }, {
    "com_id": "11",
    "comment": "testtttt",
  }]
}, {
  "msg_id": "134",
  "message": "Nick",
}, {
  "msg_id": "134",
  "message": "Nick",
}]

, это только в шаблонах усов:

{{#data}}         //loop through all data
  {{message}}     //pick out the "message" per iteration
  {{#comment}}    //loop through all comments in an iterated item
    {{comment}}   //pick out the comment
  {{/comment}}
{{/data}}
...