javascript - Handlebarsjs 对象数组 : TypeError: Cannot read property 'id' of undefined

标签 javascript backbone.js handlebars.js

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

我正在使用 this 进行循环。

当所有项目都有照片时就可以了:

<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: Cannot read property 'id' of undefined

我的对象的格式:

[  
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 行出现解析错误:...}"> {{#if Photo.0 }} {{Photo.0 -------------------- ^ 期待“ID”

最佳答案

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

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

关于javascript - Handlebarsjs 对象数组 : TypeError: Cannot read property 'id' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8216147/

相关文章:

javascript - 一个简单的事件系统 |如何?

javascript - 通过 handlebars partial 传递变量

javascript - ember 1.7.1 不适用于 Handlebars 2.0.0

javascript - 异步方法如何工作

javascript - 无法在 Marionette 布局中使用 UI 哈希找到元素

javascript - 在决定渲染之前 react 等待 map 功能以防止div闪烁

javascript - Backbone.js:智能更新已更改属性列表

javascript - 在 Ember/handlebars 应用程序中显示 JS 脚本组件

javascript - 对使用 angular 和 typescript 链接 $q promises 感到困惑

javascript - 使用 http :www as optional using regex 验证 url