मैं कारखानों में अपने कोणीय कोड को अलग करने की कोशिश कर रहा हूं, इसलिए मेरे नियंत्रक डॉन "अचूक" नहीं हैं। विशेष रूप से, मेरे कारखाने में, मैं घर कोड होगा जिसे कई नियंत्रकों में साझा किया जाएगा।
समस्या यह है, मैं अपने नियंत्रक से किसी कारखाने को इंजेक्ट नहीं कर सकता, चाहे मैं कुछ भी करूं।
यहाँ मेरा कारखाना है
angular.module("my-app")
.factory("Game", function() {
var colors = ["#FF0000", "#660000", "#FF3300", "#FF9900", "#003300",
"#000033", "#660033", "#FF0033", "#383838"];
});
यहाँ मेरा नियंत्रक है
angular.module("my-app")
.controller("gamesController", ["$scope", "$interval", "Game",
function($scope, $interval, Game) {
और यहाँ मेरा लोडिंग ऑर्डर है
<script src="scripts/app.js"></script>
<script src="scripts/services/game.js"></script>
<script src="scripts/controllers/navController.js"></script>
<script src="scripts/controllers/gamesController.js"></script>
मुझे मिला undefined provider
और मैं यह पता नहीं लगा सकता कि समस्या कहाँ है।
उत्तर:
उत्तर № 1 के लिए 1एंगुलर फैक्ट्री का रिटर्न रिजल्ट होना चाहिए।
सिंटैक्स: मॉड्यूल.फैक्टिंग ("फ़ैक्ट्रीनाम", फ़ंक्शन);
परिणाम: जब फैक्ट्रीनाम को एक इंजेक्टेबल तर्क के रूप में घोषित किया जाता है, तो आपको उस मान के साथ प्रदान किया जाएगा जो मॉड्यूल.फैक्टिंग को पारित फ़ंक्शन संदर्भ को लागू करके वापस किया जाता है।
आपका कारखाना इस तरह होना चाहिए:
angular.module("my-app")
.factory("Game", function() {
return { colors : ["#FF0000", "#660000", "#FF3300", "#FF9900", "#003300",
"#000033", "#660033", "#FF0033", "#383838"]
}
});
यदि आप अधिक विवरण जानना चाहते हैं, तो कृपया देखें AngularJS: सेवा बनाम प्रदाता बनाम कारखाना