2013-10-16 10 views
6


मैं Angularjs के लिए बहुत नया हूं।
मैंने कुछ "वैश्विक" युद्धों को स्टोर करने के लिए एंगुलरज सेवा बनाई है। यह इस तरह दिखता है:सभी नियंत्रक टेम्पलेट्स में Angularjs सेवा युद्ध

.factory('authVars', function() { 
    var sdo = { 
     baseBackendUrl: 'https://www.myurl.com', 
     user: '', 
     password: '', 
     token: '', 
     isLogged: false 
    }; 
    return sdo; 
}) 

अब मैं चाहता हूँ उपयोग एनजी शो/विभिन्न नियंत्रकों में छिपाने।

<div class="alert" ng-hide="authVars.isLogged"> 
    <strong>whatEver</strong> 
</div> 

क्या यह भी संभव है? या रूटस्कोप में इसे स्टोर करना बेहतर है?
कुछ मदद के लिए मैं बहुत आभारी हूं ;-) thx

+0

महान जवाब के लिए आप सभी को धन्यवाद! यह मुझे कोणीय को थोड़ा और समझने में मदद करता है :-) दुर्भाग्य से मैं केवल एक जवाब स्वीकार कर सकता हूं! – chris

उत्तर

2

बस हर नियंत्रक करने के लिए अपने कारखाने रजिस्टर। कोड पुन: उपयोग के लिए यह एक लक्ष्य सेवा है। सेवा उपयोगिता की तरह है, तो आप इसे एक बार लिख सकते हैं और कई नियंत्रकों

में उपयोग कर सकते हैं जे एस

myApp.factory('authVars', function() { 
    var sdo = { 
     baseBackendUrl: 'https://www.myurl.com', 
     user: '', 
     password: '', 
     token: '', 
     isLogged: false 
    }; 

    return { 
     getSdo: function() { 
      return sdo; 
     } 
    }; 

}) 


function MyCtrl($scope, authVars) { 

    $scope.authVars = authVars.getSdo(); 
} 

डेमो Fiddle

1

यह सेवा में रखने के लिए 100% ठीक है! बस भूल नहीं है प्रासंगिक नियंत्रकों में इसकी सुई:

var Ctrl = function($scope,authVars){ 
    $scope.authVars = authVars; 
} 

उदाहरण: http://jsfiddle.net/cherniv/pzFrs/2/

1

आप नीचे के रूप में नियंत्रक में सेवा इंजेक्षन की जरूरत है।

app.controller('ctrl',function($scope, authVars){   
    $scope.authVars=authVars; 
    }); 
1

हाँ निर्भरता इंजेक्शन सिस्टम के लिए यह संभव है धन्यवाद।
आप इस सेवा को हर नियंत्रक में "इंजेक्ट" कर सकते हैं जहां आपको इसकी आवश्यकता है।

<div ng-controller="MyController"> 
    <div class="alert" ng-hide="authVars.isLogged"> 
    <strong>whatEver</strong> 
    </div> 
</div> 

तो फिर तुम एक नियंत्रक इस तरह परिभाषित होने चाहिए:

मान लीजिए कि आप इस तरह एक टेम्पलेट करते

.controller('MyController', function (authVars) { 
    $scope.authVars = authVars; 
}); 
1

वहाँ कोणीय में Constans का उपयोग करने के कई तरीके हैं:

कोणीय .constant

01 का उपयोग करना

angular.value

angular.module('myApp.config', []). 
    value('config', { 
     appName: 'AppName' 
    }); 

angular.module('myApp.controllers', ['myApp.config']) 
    .controller('AppCtrl', ['$scope', 'config', function($scope, config) { 
    $scope.val = config.appName; 
}]); 

या जिस तरह से आप गए थे, लेकिन कारखाना बहुत बार एक बार $ करने के लिए config वस्तु जैसे लौटने कुछ निर्भरता ($ स्थान की तरह) इंजेक्षन से पहले सेटअप कुछ करने के लिए प्रयोग किया जाता है का उपयोग करना।

इसके अलावा मैं अक्सर दायरे में स्थिरांक संलग्न करने के लिए निर्देश consts का उपयोग मैं चाहता हूँ:

angular.module('myApp.config', []). 

directive('consts', function(config) { 
    return { 
     restrict: 'A', 
     link: function($scope) { 
     $scope.config = config; 
     } 
    } 
}); 

और फिर:

<div consts> 
    <h2>{{config.appName}}</h2> 
</div> 
संबंधित मुद्दे