模板助手中的异常:TypeError:无法读取未定义的属性“0”

时间:2016-11-21 23:18:03

标签: javascript meteor meteor-useraccounts

当我开始收到错误时,我正在使用meteor中的用户帐户。控制台中打印的错误位于我的userEmail辅助函数中。 我的问题是,如果它是undefined那么为什么我得到一个输出?

我的HTML代码:

{{#each user}}
        {{#if student}}
            <div class="row">
                <div class="user-wrapper">
                    <div class="row">
                        <div class="name-wrapper col-md-3">
                            <span class="head">{{profile.firstname}}</span>
                        </div>
                        <div class="email-wrapper col-md-3">
                            <span class="head">{{userEmail}}</span>
                        </div>
                        <div class="email-wrapper col-md-3">
                            <span class="head">{{>starsRating mutable=true class="js-rate-images" id=_id}}</span>
                        </div>
                        <div class="email-wrapper col-md-3">
                            <span class="head">Remark</span>
                            <button class="btn btn-primary">Enter Remark</button>
                        </div>
                    </div>
                </div>
            </div>
    {{/if}}
    {{/each}}

我的助手功能是:

Template.Users.helpers({
    user: function(){
        return Meteor.users.find();
    },
    userEmail:function(){
        return this.emails[0].address;
    },
    student:function(){
        return this.profile.profession === 'student';
    }
});

1 个答案:

答案 0 :(得分:0)

您的功能在加载Collection之前正在运行,但由于Meteor助手是Reactive,因此您可以在加载集合后获得结果。
阻止该消息的一种方法是有条件地运行代码:

if(this.emails !== undefined){
  return this.emails[0].address;
}