0

ハンドルバーjsを使用してjsonデータオブジェクトを反復処理しています。しかし、ハンドルバーは「depth0」が未定義であるという例外をスローします。

私は適切な方法で生成を行っていますか?

HTML

<div class="eventlist">                                 
  <ul>                                      
    <script id="event_template" type="text/x-handlebars-template">                          
      <li>{{name}}</li>                             
  </script>                                     
</ul>                               
</div>

JS

generateEventList = function(){
    var el_tmpl = Handlebars.compile($('#event_template').html());
    $.getJSON('json/events.json' , function(k,v) {
        $('.event-list ul').append(el_tmpl(v.eventList));
    });
};

JSON

{ 
 "event": [ 
  { 
     "month": "august", 
     "eventList": { 
        "name": "Event1",
        "name": "Event1",
        "name": "Event2",
        "name": "Event3",
        "name": "Event4",
        "name": "Event5",
        "name": "Event6"
     }, 
     "list": [ 
        { 
           "name": "Comment", 
           "link": "http://www.facebook.com/X999/posts/Y999"
        }, 
        { 
           "name": "Like", 
           "link": "http://www.facebook.com/X999/posts/Y999"
        } 
     ], 
     "type": "status", 
     "created_time": "2010-08-02T21:27:44+0000", 
     "updated_time": "2010-08-02T21:27:44+0000"
  }
 ] 
}
4

1 に答える 1

0

成功ハンドラーが引数として取得するものについて少し混乱していると思います。$.getJSON最初の引数はJSON応答全体であり、2番目はテキストステータスです。

次のようなもので$.each繰り返し処理するために使用します。eventList

$.getJSON('json/events.json' , function(data) {
    var $ul = $('.event-list ul');
    $.each(data.event[0].eventList, function(k, v) {
        $ul.append(el_tmpl(v));
    });
});

したがって、k,v関数はでは$.eachなく、で実行され、適切$.getJSONに掘り下げる必要があります。data

list代わりにeventList、コンテキストなしで言うのは難しいかもしれません。

于 2012-08-13T04:00:02.057 に答える