簡體   English   中英

Handlebars.js無法讀取未定義的屬性“哈希”

[英]Handlebars.js Cannot read property 'hash' of undefined

有以下代碼:

<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}}

然后它會部分工作。 但不幸的是,我需要那些前提條件。 因此,無論是否都可以。 我試圖解決最后兩個小時的問題,但我還是空了:/

{{#if this.text and this.outcomes}} 在重新定義整個語句后,只包含了部分ifelse它開始正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM