handlebars.js просто перестал работать? - PullRequest
0 голосов
/ 05 октября 2011

У меня интересная проблема.У меня был шаблон handlebars.js, который работал неделю и просто остановился.Я надеялся, что кто-то может иметь представление о том, почему.

Вот шаблон

    <script id="banners-template" type="text/x-handlebars-template">
   <div class="banner-container" >
   {{#banners}}
   <ul class="banner" >
   <li><div class="checkbox"></div></li>
   <li>{{publisher_status}}</li>
   <li><a href="{{url}}">Test Link</a></li>
   <li><img class="banner" src="{{imageurl}}"/></li>
   <li>{{description}}</li>
   <li>{{width}}x{{height}}</li>
   </ul>
   {{/banners}}
   </div>
   </script>

Вот код, который работает с этим.

    var bannersRawTemplate   = $("#banners-template").html();
    var bannersTemplate = Handlebars.compile(bannersRawTemplate);
    data = '{"banners":[{"type":"banner","width":125}]}';
    alert(bannersTemplate(data));

Я понимаю, чтоТип не доступен в шаблоне выше, но это не имеет значения.Я все еще должен получить код внутри цикла «баннеры», отображаемый один раз.Это не вариант.Единственная часть шаблона, которая отображается.Это как не видеть массив баннеров внутри JSON.

Есть идеи?

Заранее спасибо.

1 Ответ

0 голосов
/ 05 октября 2011

Есть ли конкретная причина, по которой вы не передаете фактический JSON, а вместо этого передаете строку?Исходя из моего опыта работы с Mustache и краткого обзора документации Handlebars.js, вы должны передать:

JSON.parse('{"banners":[{"type":"banner","width":125}]}');

И, предполагая, что код, который вы показали, «действительно реален», почему бы не просто:

{"banners":[{"type":"banner","width":125}]}

Это, конечно, при условии, что проблема действительно не в том, что у вас есть список только с одним элементом.

...