2016-11-21 7 views
0

오류가 발생했을 때 meteor에서 사용자 계정으로 작업하고있었습니다. 내 userEmail 도우미 기능에 콘솔에 오류가 인쇄되어 있습니다. 내 질문은 그것이 undefined 인 경우 왜 출력을 얻는 것입니까? 템플릿 도우미의 예외 : TypeError : 정의되지 않은 '0'속성을 읽을 수 없습니다.

내 HTML 코드 : 컬렉션이로드되기 전에

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

은'emails' 키는 기본적으로 게시되지 않습니다. 사용자 게시는 어떤 모습입니까? –

+1

템플릿은'return Meteor.user(). emails [0]'이어야합니다. 'accounts-facebook' 등 'accounts-password'를 사용하지 않는다면'emails'도 존재하지 않을지라도 – JeremyK

+0

나는 accounts-password를 사용하고있다. –

답변

0

함수가 실행되고 있지만, 유성 도우미가 반응성 때문에, 당신은 일단 결과를 얻을 :

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

내 도우미 기능

은 컬렉션이로드되었습니다. 그 메시지를 방지하기 위해
한 가지 방법은 조건부 코드를 실행하는 것입니다 :

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