@freeman0204

Не работает Handlebars. Что не так делаю?

Есть такой блок:

<div class="hand">
<script id="objects" type="text/x-handlebars-template">
{{#each objects}}
<h3>{{title}}</h3>
 <p>{{description}}
<a href="{{link}}">Ссылка</a>
</p>
{{/each}}
 </script>
</div>


Вот что у меня в файле data.json

{
    "objects": [
       {
         "title":"Заголовок",
           
         "description":"Какой то текст",
           
         "link":"https://toster.ru/question/new"
       }
    ]
}

Смотрел несколько уроков. Почему некоторые используют ajax а некоторые нет? 
Вот что я находил.
var data = {
   name : 'John Doe'
},

var template = Handlebars.compile( $('#objects').html() );
$('.hand').append( template(data) );


Как я понимаю
var data = {
   name : 'John Doe'
},


пишется в файл js не в json? Зачем тогда я писал в json то что выше? (Делал по уроку на ютюб)

В этом уроке использовали ajax

$(document).ready(function () {
    
    var hand = $('.hand');
    
$.ajax({
    url: 'data.json' 
}).done(function(data){
    var json = JSON.parse(data),
        source = $("#objects").html(),
        template = Handlebars.compile(source),
        html = template(json);
    
    $('.hand').append( template(data) );
})
});


Но это у меня тоже не работает. Что не так делаю?
  • Вопрос задан
  • 530 просмотров
Пригласить эксперта
Ответы на вопрос 2
@DanSorokin
Full-stack developer at onvoya.com
Может потому что, надо писать $('.hand').append( json ):
Ответ написан
PretorDH
@PretorDH
HTML5, CSS3, PHP, JS - люблю в чистом виде.
Попробуй выложить темплейт из результирующего блока.

<script id="objects" type="text/x-handlebars-template">
{{#each objects}}
<h3>{{title}}</h3>
 <p>{{description}}
<a href="{{link}}">Ссылка</a>
</p>
{{/each}}
 </script>

<div class="hand">

</div>


А в варианте с AJAX
$(document).ready(function () {
    
    var hand = $('.hand');
    
$.ajax({
    url: 'data.json' 
}).done(function(data){
    var json = JSON.parse(data),
        source = $("#objects").html(),
        template = Handlebars.compile(source),
        html = template(json);
    
    $('.hand').append( html );             //-- было template(data)
})
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы