क्या प्रत्येक सेवा और नियंत्रक में AngularJS के $ लॉग को इंजेक्ट करने का कोई तरीका है? यह सिर्फ हर किसी के लिए निर्दिष्ट थोड़ा अनावश्यक लगता है।
उत्तर
इंजेक्शन करना फ़ंक्शन पैरामीटर में इसे परिभाषित किए बिना मेरे लिए असंभव प्रतीत होता है। लेकिन आप इसे उपलब्ध करा सकते हैं:
var $log;
app.run(['$log',function(logService) {
$log = logService;
}]);
app.controller('MainCtrl', function($scope, myService) {
$log.warn('Controlling');
});
app.service('myService', function() {
$log.warn('Ha!');
return {};
});
http://plnkr.co/edit/Zwnay7dcMairPGT0btmC?p=preview
एक और तरीका है एक वैश्विक चर (window.$log
) के रूप में सेट करने के लिए होगा, लेकिन मैं ऐसा नहीं होता।
एक और तरीका यह है कि आप रूटस्कोप में एक विधि जोड़ना चाहते हैं, और उसके बाद इसे $ स्कोप के माध्यम से एक्सेस करें। अपने नियंत्रकों में $ रूट, इस प्रकार एक और इंजेक्शन से परहेज करें। मुझे नहीं पता कि यह ग्लोबल्स जितना बुरा है।
testapp.js
(function(){
'use strict';
angular.module('app', [])
.run(function($rootScope, $log) {
$rootScope.log = function(msg){
$log.info(msg);
}
})
.controller('LogCtrl', ['$scope', function LogCtrl($scope) {
$scope.logThis = function(msg){
$scope.$root.log(msg);
};
}]);
})();
test.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.5/angular.min.js"></script>
<script src="testapp.js"></script>
</head>
<body ng-app="app">
<div ng-controller="LogCtrl">
<p>Enter text and press the log button.</p>
Message:
<input type="text" ng-model="message"/>
<button ng-click="logThis(message)">log</button>
</div>
</body>
</html>
काफी अच्छा। मैं अपने नियंत्रक को 'नियंत्रक के रूप में' सिंटैक्स का उपयोग करके सब कुछ डालने के बिना लिखना चाहता हूं, इसलिए यह पता चला कि मुझे उन सभी में $ स्कोप इंजेक्ट करने की आवश्यकता होगी और केवल $ लॉग इंजेक्ट करना आसान है। –
शायद ही अपग्रेड की तरह दिखता है - मैं '$ scope। $ Root.log' टाइप करने के बजाय हर जगह '$ log' इंजेक्ट करना चाहता हूं, जबकि उन जगहों पर' $ scope' इंजेक्शन भी दे रहा था, उदाहरण के लिए: उदाहरण के लिए: स्कोप निर्देश अलग करना) ... मैं सफल हो जाऊंगा –
यहाँ जो लोग सोचते हैं कि $ rootscope का उपयोग कर बहुत ज्यादा उपद्रव की आवश्यकता के लिए एक समाधान है: $ लॉग जोड़ने कोणीय वस्तु के लिए।
angular.module('myModule')
.run(['$log', function($log) {
angular.log = $log;
}]);
फिर जब आप अपने नियंत्रक बनाते हैं, तो कोई $ लॉग आवश्यक नहीं होता है।
angular.module('myModule')
.controller('MyController', MyController);
MyController.$inject = []; // <-- see, no $log required!
function MyController() {
angular.log.info("Hello world");
}
आप इसे एक कदम आगे भी ले सकते हैं और angular.info = $ log.info जोड़ सकते हैं यदि आप इसे और छोटा करना चाहते हैं।
- 1. Symfony2: सेवा में वर्तमान उपयोगकर्ता इंजेक्ट करें
- 2. Grails: कमांड ऑब्जेक्ट में सेवा इंजेक्ट करें
- 3. Symfony2: सेवा में सभी पैरामीटर कैसे इंजेक्ट करें?
- 4. एंजुलरजेज़ में नियंत्रक में $ स्कोप का उपयोग करने वाले फ़ंक्शंस को इंजेक्ट/इंजेक्ट कैसे करें?
- 5. प्रत्येक नियंत्रक कार्रवाई से पहले/बाद में कोड निष्पादित करें
- 6. सेवा में इन-मेमोरी उपयोगकर्ता प्रदाता को इंजेक्ट कैसे करें?
- 7. वर्ग में सेवा इंजेक्ट कैसे करें (घटक नहीं)
- 8. सिम्फनी 2 डेटा फिक्स्चर में सेवा कैसे इंजेक्ट करें?
- 9. सिम्फनी 3 - एक सेवा में वैधकर्ता को इंजेक्ट कैसे करें?
- 10. मॉड्यूल और नियंत्रक प्राप्त करें | सेवा | रनटाइम पर निर्देशक नाम
- 11. सजावटी पैटर्न और @ इंजेक्ट
- 12. आप किसी सेवा में प्रॉक्सी इंजेक्ट कैसे करते हैं?
- 13. लॉग 4नेट: प्रत्येक वर्ग
- 14. कोणीय 2.0 - इंजेक्ट Http सेवा अपरिभाषित है
- 15. कोणीय 2: @CanActivate में निर्भरता इंजेक्ट करें?
- 16. वसंत - कंक्रीट इंटरफ़ेस कार्यान्वयन कैसे इंजेक्ट करें?
- 17. लेनदेन: नियंत्रक बनाम सेवा
- 18. सिम्फनी 3 फॉर्मटेप में कंटेनर इंजेक्ट करें
- 19. पुनर्निर्देशन लॉग इन नियंत्रक कार्रवाई
- 20. अभिनेता में वेबसॉकेट.एसेप्टविथएक्टर और @ इंजेक्ट()
- 21. जैस्मीन/कोणीय जेएस: इकाई परीक्षण में सेवा के लिए निर्भर सेवा इंजेक्ट करें?
- 22. क्या मैं Grails में फ़िल्टर में एक सेवा इंजेक्ट कर सकता हूं?
- 23. एंगुलरजेएस सेवा परीक्षण के अंदर सेवा नकली इंजेक्ट
- 24. एक्सकोड: स्टोरीबोर्ड और प्रत्येक नियंत्रक में डेटा को बनाए रखने
- 25. नियंत्रक या सेवा परत
- 26. एमवीसी नियंत्रक विधि में web.config सेटिंग्स को कैसे पढ़ा जाए और उन्हें कोणीय दृश्य, नियंत्रक और सेवा में एक्सेस करें?
- 27. सेवा नियंत्रक अनुमतियाँ
- 28. टेन्सफोर्लो सेवा: प्रत्येक मॉडल
- 29. WCF सेवा आईआईएस लॉग
- 30. कोणीय 2 किसी अन्य सेवा में इंजेक्ट सेवा 2 उदाहरण बनाता है
जब आप वैश्विक क्षेत्र में 'var $ log' को परिभाषित करते हैं तो आप मूल रूप से' विंडो 'सेट कर रहे हैं। $ Log' –