Там в этот код:Handlebars.js Не удается прочитать свойство 'хэш' неопределенной
<div id="banner-tree" class="hidden"></div>
<script id="banner-template" type="x-handlebars-template">
{{#each this}}
{{#if this.text and this.outcomes}}
<div class="banner-wrap" style="background-image: url({{imageSrc}});">
<div class="banner-desc">{{text}}</div>
<div class="banner-markets">Odds: {{outcomes.outcomeOdds}}</div>
</div>
{{else if this.outcomes}}
<div class="banner-wrap" style="background-image: url({{imageSrc}});">
<div class="banner-markets">Odds: {{outcomes.outcomeOdds}}</div>
</div>
{{else if this.text}}
<div class="banner-wrap" style="background-image: url({{imageSrc}});">
<div class="banner-desc">{{text}}</div>
</div>
{{else}}
<div class="banner-wrap" style="background-image: url({{imageSrc}});"></div>
{{/if}}
{{/each}}
</script>
И этот сценарий:
var templateBanner = $("#banner-template").html();
var templateCompiled = Handlebars.compile(templateBanner);
var compiledHtml = templateCompiled(response.data);
var bannerTree = $('#banner-tree');
bannerTree.html(compiledHtml);
bannerTree.removeClass('hidden');
Handlebars.registerHelper('if', function(conditional, options) {
if(conditional) {
return options.fn(this);
} else {
return options.reverse(this);
}
});
Handlebars.registerHelper('each', function(context, options) {
var ret = "";
for(var i=0, j=context.length; i<j; i++) {
ret = ret + options.fn(context[i]);
}
return ret;
});
Вчера это было все в порядке. Он работал так, как должен. Сегодня утром я начал получать Cannot read property 'hash' of undefined
. После некоторого запроса я понял, что ошибка находится в {{#each this}}
элемента. Или, по крайней мере, я думаю. Когда я изменяю контекст, скажем, для data
, он не дает никаких результатов (загруженные массивы JSON НЕ вставляются в div), но это тоже не дает мне ошибки. Когда я удаляю всю эту теорию и оставляю только
{{#each this}}
<div class="banner-wrap" style="background-image: url({{imageSrc}});"></div>
{{/each}}
Тогда это работает частично. Но, к сожалению, мне нужны эти ifs. Итак, это же, если или каждый. Я пытаюсь решить это в течение последних двух часов, и я подошел пустой:/