2013-05-03 2 views
18

유성 프레임 워크와 자바 스크립트는 일반적으로 새롭기 때문에 약간의 프로젝트를 통해 프레임 워크를 사용하여 스스로를 긁어 모으고 있습니다. 기본적으로 저는 마이크로 블로깅 사이트에서 일하고 있습니다.로그인 이벤트에 대한 Meteor.js

사용자는 여러 개의 서비스, fb, google 등을 통해 로그인 할 수 있습니다. 그리고 필요한 URL에 삽입 된 서비스 ID를 통해 아바타를 검색합니다.이 모든 것이 정상적으로 작동합니다. 하지만 사용자가 로그인하자마자 자신의 아바타를 볼 수 있기를 바란다. 로그인이 성공한 직후에 일부 JavaScript를 실행해야한다는 의미이다. 지금은 onLogin 스타일 이벤트에서 아무것도 찾을 수 없습니다. 그리고 사용자가 로그인 할 때 코드를 실행하기 위해 핸들 바 템플릿을 해킹했습니다. 그러나이 코드는 한 번만 실행되며 사용자가 로그 아웃했다가 다시 로그인하면 더 이상 아바타가 표시되지 않습니다.

누구든지이 작업을 수행 할 수있는 이벤트를 알고 있습니까? 여기

내 해키 템플릿 여기

{{#if currentUser}} 
    {{> userInput}} 
{{/if}} 

입니다 그것은 내가 도움을 주셔서 감사합니다 정말 것이다

$('#inputAvatar').css('background-image', 'url('+avatarUrl+')'); 

호출 JS, 나는 그것이 내가 간과 한 것을 간단하게 뭔가 확신하지만 질수는 그것을 이해하는 것처럼 보인다!

감사합니다.

답변

17

사용자가 로그인 한 경우에 당신이 그것을하고있는 방식이 가장 적합한 지 모르지만 개인적으로 클라이언트 측에서 다음을 감지 않는다 :

Tracker.autorun(function(){ 
    if(Meteor.userId()){ 
    //do your stuff 
    } 
}); 
+0

감사합니다. 이제 코드가 정상적으로 실행되지만 배경 코드를 업데이트하는 코드가 작동하지 않습니다. Chrome 콘솔에 입력 할 때 작동하지만 Deps.autorun 메서드에서 실행하면 작동하지 않습니다. '$ ('# inputAvatar') .css ('background-image', 'url (\'+ avatarURL + ') \ ')');' –

+0

** ** 업데이트 ** Deps.autorun 함수와 결합 된 템플릿의 .rendered 함수로 문제를 실제로 해결했습니다. 모든 도움에 감사드립니다! –

+0

왜 이것을 클라이언트에서 실행해야하는지 질문 할 수 있습니까? 이제는 실제로 Metoer.userId()가 서버에서 수행하는 작업과 실제로 혼동을줍니다. – MurWade

2

당신이 사용하는 경우 구글 로그인 또는 기타 o-auth 로그인의 경우 로그인 후 실행되는 콜백 함수를 전달할 수 있습니다.

다음은 샘플 코드입니다.

Meteor.loginWithGoogle({ 
    requestPermissions: ['email'] 
}, function(error) { 
    if (error) { 
    console.log(error); //If there is any error, will get error here 
    }else{ 
    console.log(Meteor.user());// If there is successful login, you will get login details here 
    } 
}); 
+0

Meteor.loginWithPassword()를 포함하여 어떤 Meteor.login에서 콜백을 () 메소드와 함께 사용할 수 있어야합니다. 나는 OAuth에 대한 언급을 남겨두고 싶지 않습니다. https://docs.meteor.com/api/accounts.html#Meteor-loginWithPassword –