2013-05-03 8 views
18

तो मैं सामान्य रूप से उल्का ढांचे और जावास्क्रिप्ट के लिए नया हूं, लेकिन मैं ढांचे का उपयोग करके थोड़ा सा प्रोजेक्ट पर काम कर रहा हूं ताकि मैं खुद को खरोंच कर सकूं। असल में मैं एक माइक्रो ब्लॉगिंग साइट पर काम कर रहा हूं।लॉगिन घटना पर Meteor.js

फिलहाल उपयोगकर्ता कई सेवाओं, एफबी, गूगल इत्यादि के माध्यम से लॉग इन करने में सक्षम हैं। और मैं आवश्यक अवतार में डाली गई सेवा आईडी के माध्यम से अपने अवतार पुनर्प्राप्त करता हूं, यह सब ठीक काम करता है। लेकिन मैं चाहता हूं कि उपयोगकर्ता लॉग इन सफल होने के बाद मुझे अपना खुद का अवतार देखने में सक्षम हो, जिसका मतलब है कि मुझे कुछ जावास्क्रिप्ट सही चलाने की ज़रूरत है। इस समय मैं ऑनलाइन शैली कार्यक्रम पर कुछ भी नहीं ढूंढ सकता। और जब कोई उपयोगकर्ता लॉग इन करता है तो कोड चलाने के लिए एक हैंडलबार टेम्पलेट को एक साथ हैक किया है। हालांकि यह कोड केवल एक बार चलाने के लिए प्रतीत होता है और यदि कोई उपयोगकर्ता लॉग आउट करता है और फिर वापस आता है तो वे अब अपना अवतार नहीं देखते हैं।

क्या किसी को ऐसा कोई घटना पता है जिसे मैं ऐसा करने के लिए उपयोग कर सकता हूं?

यहाँ मेरी hacky टेम्पलेट

{{#if currentUser}} 
    {{> userInput}} 
{{/if}} 
यहाँ

है js यह कहता है

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

मैं वास्तव में मदद की सराहना करेंगे है, मैं लेकिन यकीन है कि यह कुछ आसान है कि मैं अनदेखी की है हूँ मैं ऐसा लगता है कि इसे समझ में नहीं आता!

धन्यवाद, पीटर।

उत्तर

17

अगर जिस तरह से आप यह कर रहे हैं सबसे उपयुक्त है मैं नहीं जानता, लेकिन व्यक्तिगत रूप से ग्राहक के पक्ष निम्नलिखित पता लगाने के लिए करते हैं कि कोई उपयोगकर्ता द्वारा प्रवेश:

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

धन्यवाद, पता था कि यह कुछ स्पष्ट था! कोड अब ठीक चलाता है, लेकिन किसी कारण से पृष्ठभूमि छवि को अपडेट करने के लिए मेरा कोड काम नहीं कर रहा है। मुझे लगता है कि यह क्रोमस कंसोल में प्रवेश करते समय काम करता है लेकिन जब Deps.autorun विधि '$ ('# इनपुटअवार') के भीतर से चलाया जाता है। सीएसएस ('पृष्ठभूमि-छवि', 'url (\' + avatarURL + ' \ ')'); ' –

+0

** अद्यतन ** मैंने वास्तव में Deps.autorun फ़ंक्शन के साथ संयुक्त रूप से मेरे टेम्पलेट के लिए .rendered फ़ंक्शन के साथ समस्या हल की। पूरी सहायताके लिए शुक्रिया! –

+0

क्या मैं पूछ सकता हूं कि आपको इसे क्लाइंट पर क्यों चलाने की आवश्यकता है? अब यह वास्तव में मुझे वास्तव में भ्रमित कर रहा है कि Metoer.userId() सर्वर पर क्या करता है। – MurWade

2

आप उपयोग कर रहे हैं गूगल लॉगिन या कोई अन्य ओ-ऑथ लॉगिन, आप कॉलबैक फ़ंक्शन पास कर सकते हैं जो लॉगिन के बाद निष्पादित हो जाएगा,

यहां नमूना कोड है।

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.login के साथ उपलब्ध होना चाहिए () विधि, जिसमें Meteor.loginWithPassword() शामिल है। मैं नहीं चाहता कि ओथ के संदर्भ में किसी को भी फेंक दें। https://docs.meteor.com/api/accounts.html#Meteor-loginWithPassword –

संबंधित मुद्दे