Handlebarsjs对象数组:TypeError:无法读取未定义的属性“id”

时间:2011-11-21 17:48:29

标签: javascript backbone.js handlebars.js

我有一个项目列表,每个项目都可以有一个Photo项目。

我正在使用this循环播放。

当所有项目都有Photo

时,此功能正常
<script id='library-template' type="text/x-handlebars-template">
    {{#this}}
        <div class='box'>
            <a href='#insight' data-insight_id="{{Item.id}}">
            {{#if Photo.0.id }}
                    {{Photo.0.photo}}
            {{/if}}
            </a>

            <div class='subtitle'>
                <h2>{{Item.title}}</h2>
                <p>Added: {{Item.created}}</p>
            </div>
        </div>
    {{/this}}
</script>

当前对象没有Photo对象时:

  

TypeError:无法读取未定义的属性“id”

我的对象格式:

[  
Object  
    Item: Object  
    Photo: Array[1]  
    Rating: Array[0]  
    Tag: Array[0]  
    __proto__: Object  
,
Object  
    Item: Object  
    Photo: Array[0]  
    Rating: Array[0]  
    Tag: Array[0]  
    __proto__: Object  
,
Object  
,
Object  
,
Object  
]

第二个对象没有所有其他对象的Photo记录。

如何在Photo没有内容的情况下访问Photo对象,确保不会出现错误?

注意:测试{{#if Photo.0}}而不是{{#if Photo.0.id}}结果:
错误:第5行解析错误:...}“&gt; {{#if Photo.0}} {{Photo.0 --------------------- - ^期待'ID'

1 个答案:

答案 0 :(得分:4)

放在这里,以防其他人需要:

 {{#if Photo.length}} {{Photo.0.photo}} {{/if}}