2013-08-22 8 views
19

में सेवा का उपयोग करें मुझे कोणीय जेएस सेवा के साथ समस्या है।देखें कोणीय जेएस

angular.module('mainApp.services', []).factory('AuthService', 
function ($http) { 
    //var currentUser = null; 
    //var authorized = false; 

    //AutoLogin for testing 
    var currentUser={email: "[email protected]", id: "15"}; 
    var authorized=true; 

    // initial state says we haven't logged in or out yet... 
    // this tells us we are in public browsing 
    var initialState = false; 

    return { 
     initialState:function() { 
      return initialState; 
     }, 
     login:function (userData) { 
      //Call API Login 
      currentUser = userData; 
      authorized = true; 
      initialState = false; 
     }, 
     logout:function() { 
      currentUser = null; 
      authorized = false; 
     }, 
     isLoggedIn:function() { 
      return authorized; 
     }, 
     currentUser:function() { 
      return currentUser; 
     }, 
     authorized:function() { 
      return authorized; 
     } 
    }; 
}); 

तो मैं एक साधारण नियंत्रक

.controller('NavbarTopCtrl', ['$scope','$modal','AuthService',function($scope,$modal,authService) { 
    $scope.authService=authService; //IS good practice? 
    console.log($scope); 
}]) 

मैं दृश्य में मेरी सेवा का उपयोग नहीं कर सकते हैं:

मैं साधारण सेवा है। मैंने सरल चाल बनाई और ठीक काम करता है।

$scope.authService=authService 

लेकिन यह कैसे मेरी देखें (HTML फ़ाइल) में इस के बिना सेवा कॉल करने के लिए?

उत्तर

16

विचारों के अंदर सेवाओं का उपयोग करना आमतौर पर एक बुरा अभ्यास है। दृश्य में केवल एक प्रेजेंटेशन तर्क होना चाहिए। आपके उदाहरण में संपूर्ण सेवा को देखने के बजाय आप केवल उपयोगकर्ता ऑब्जेक्ट को पास करने का प्रयास कर सकते हैं। उदाहरण के लिए $scope.currentUser = authService.currentUser()

+0

सेवा लॉगिन करने के लिए यहां देखें। यह बढ़िया काम करता है। https://github.com/robertjchristian/angular-enterprise-seed –

+7

आपके पास फ़ंक्शंस का एक सेट कब है, जिसे आप दृश्य से कॉल करने योग्य चाहते हैं जैसे 'ng-click'? कंट्रोलर के अंदर कॉलर फ़ंक्शन के अंदर दृश्य में आने वाले प्रत्येक एकल फ़ंक्शन को लपेटना बहुत कठिन है। विचार? –

+12

myApp.configure (फ़ंक्शन ($ rootScope) {$ rootScope.foo = function() {console.log ("मुझे हर जगह से कॉल करें;)")}; – luacassus