सबसे आसान तरीका है यह पूरा करने के लिए एक सेवा का उपयोग कर रहा है। उदाहरण के लिए:
app.factory('AuthService', function() {
var currentUser;
return {
login: function() { ... },
logout: function() { ... },
isLoggedIn: function() { ... },
currentUser: function() { return currentUser; }
...
};
});
फिर आप इसे अपने किसी भी नियंत्रक में संदर्भित कर सकते हैं। निम्न कोड सेवा से किसी मान में परिवर्तन के लिए देखता है (निर्दिष्ट फ़ंक्शन को कॉल करके) और फिर बदले गए मानों को दायरे में समन्वयित करता है।
app.controller('MainCtrl', function($scope, AuthService) {
$scope.$watch(AuthService.isLoggedIn, function (isLoggedIn) {
$scope.isLoggedIn = isLoggedIn;
$scope.currentUser = AuthService.currentUser();
});
});
और फिर, निश्चित रूप से, आप उस जानकारी का उपयोग कर सकते हैं हालांकि आप फिट देखते हैं; जैसे निर्देशों में, टेम्पलेट्स इत्यादि में। आप इसे अपने मेनू नियंत्रकों आदि में दोहरा सकते हैं (आपको जो करना है उसे अनुकूलित करें)। जब आप सेवा पर राज्य बदलते हैं तो यह स्वचालित रूप से अपडेट हो जाएगा।
कुछ भी अधिक विशिष्ट आपके क्रियान्वयन पर निर्भर।
आशा है कि इससे मदद मिलती है!
स्रोत
2013-01-08 00:41:29
है यही कारण है कि मैं भी सोच रहा था, लेकिन मैं उत्सुक कैसे कारखाने में काम करता है हूँ। जब भी नियंत्रक बनाया जाता है और AuthService के लिए पूछता है, तो क्या हमें एक अलग वर्तमान उपयोगकर्ता संदर्भ नहीं मिलेगा? शायद मैं इस बात पर स्पष्ट नहीं हूं कि कोणीय कैसे चीजों को हुक करता है। आदर्श रूप में हमारे पास एक संदर्भ होगा। एक विकल्प के रूप में मैं ngCookies स्टोर (मेरा पसंदीदा विचार नहीं) या ब्राउज़र भंडारण (अभी तक समर्थित नहीं है) का उपयोग करने के बारे में सोच रहा था। –
@ChrisNicola वास्तव में, AngularJS में सभी सेवाएं सिंगलेट हैं। इसलिए सेवा पहली बार अनुरोध की जाती है (यानी नियंत्रक या किसी अन्य सेवा द्वारा) और इसके बाद के सभी अनुरोध सटीक उसी उदाहरण को वापस कर देते हैं। –
@JoshDavidMiller आपके पास एक फ़ंक्शन के रूप में 'isLoggedIn' प्रॉपर्टी है? क्या वह बुलियन नहीं होगा? – nicholas