2013-05-03 44 views
18

Genel olarak meteor çerçevesine ve genel olarak JavaScript'e yeniyim, ama çizmeyi ve kendimi çizmeye çalışmak için çerçeveyi kullanarak küçük bir proje üzerinde çalışıyorum. Temelde bir mikro blog sitesi üzerinde çalışıyorum.Oturum açma olayında Meteor.js

Şu anda kullanıcılar çeşitli servisler, fb, google vb. Aracılığıyla oturum açabiliyorlar. Ve onların avatarlarını gereken URL'ye eklenmiş servis kimliği aracılığıyla aldım, tüm bunlar iyi çalışıyor. Ancak kullanıcının giriş yaptıktan sonra kendi avatarlarını görebilmesini istiyorum. Bu sayede, giriş yaptıktan sonra bir JavaScript'i çalıştırmam gerekiyor. Bu noktada, onLogin stilinde bir şey bulamıyorum. Ve bir kullanıcı oturum açtığında kodu çalıştırmak için bir handlebars şablonunu bir araya getirdik. Ancak bu kod sadece bir kez çalışır ve bir kullanıcı oturumu kapatır ve daha sonra artık kendi avatarlarını görmezler.

Bunu yapmak için kullanabileceğim bir etkinlik bilen var mı? Burada

benim hacky şablon burada

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

olduğunu ben Yardım takdir ediyorum

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

çağırır js, ben ben ardı ettik basit bir şey olduğuna eminim ama bunu anlamaya görünmüyor!

Teşekkürler, Peter.

cevap

17

bir kullanıcı oturum eğer bunu yaparsınız yolu en uygun olup olmadığını bilmiyorum ama şahsen istemci tarafında aşağıdaki algılamak için do:

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

Teşekkürler, açık bir şey olduğunu biliyordum! Kod şimdi iyi çalışıyor, ama nedense arka plan resmini güncellemek için kodum çalışmıyor. Bunu, chromes konsoluna girerken çalıştığını, ancak Deps.autorun yöntemi '$ ('# inputAvatar') içinden çalıştırılmadığında çalışmadığına dikkat edeceğim. Css ('background-image', 'url (\' + avatarURL + ') \ ')'); ' –

+0

** GÜNCELLEME ** Ben aslında sorunum .sürüm işleviyle birlikte şablonum için .rendered işleviyle sorunu çözdüm. Yardımın için teşekkürler! –

+0

Bunu neden müşteride çalıştırmanız gerektiğini sorabilir miyim? Şimdi bana gerçekten Metoer.userId() sunucusunda yaptığı ile gerçekten kafamı karıştırıyor. – MurWade

2

Eğer kullanıyorsanız google giriş veya herhangi bir diğer o-ağa giriş, giriş yaptıktan sonra çalıştırılacak bir geri çağırma işlevini iletebilirsiniz,

Örnek kod buradadır.

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

Geri aramalar, Meteor.loginWithPassword() dahil olmak üzere herhangi bir Meteor.loginWith () yönteminde kullanılabilir olmalıdır. OAuth'a referansı kimseyi buraya atmak istemiyorum. https://docs.meteor.com/api/accounts.html#Meteor-loginWithPassword –