2012-06-29 7 views
7

मुझे एक isLoggedIn() फ़ंक्शन की आवश्यकता है जो दोनों नियंत्रकों और टेम्पलेट्स तक पहुंच प्राप्त करें (टेम्पलेट्स को ng-show = "isLoggedIn()" जैसे कुछ करने के लिए इसकी आवश्यकता है)। ऐसा करने का सबसे अच्छा तरीका क्या है?AngularJS में isLoggedIn फ़ंक्शन बनाने का सबसे अच्छा तरीका है जिसे किसी भी नियंत्रक या टेम्पलेट में एक्सेस किया जा सकता है?

यदि उत्तर एक सेवा है, तो क्या किसी टेम्पलेट के भीतर से किसी सेवा को एक्सेस करना संभव है, या क्या मेरे प्रत्येक नियंत्रक को इसे देखने के लिए टेम्पलेट के लिए एक रैपर फ़ंक्शन बनाने की आवश्यकता है ($ स्कोप में)?

उत्तर

5

मेरे पास आमतौर पर मेरे बॉडी टैग में 'MainCtrl' होता है और इसमें वैश्विक सामग्री डालती है।

<body ng-controller="MainCtrl"> 
    ... 
</body> 

function MainCtrl($scope, authService) { 
    $scope.isLoggedIn = function() { 
    return authService.isLoggedIn(); 
    } 
} 

फिर हर दूसरे दायरे को लॉग इनइन फ़ंक्शन का वारिस होगा।

आप $ रूटस्कोप पर isLoggedIn भी डाल सकते हैं, लेकिन मुझे इस तरह से पसंद है।

+0

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

+0

यहां वही है। मुझे उप-नियंत्रकों के बारे में पता नहीं था। धन्यवाद इससे मुझे कुछ चीजों को साफ करने में मदद मिली जो मैं समझने की कोशिश कर रहा हूं। – Jeff