2012-06-26 13 views
44

मैं अभी भी बहुत AngularJS के लिए नया हूँ और मेरा पहला आवेदन की स्थापना के माध्यम से काम कर रहा हूँ।angular.module के साथ बनाया AngularJS नियंत्रकों का उपयोग करना()। नियंत्रक()

Uncaught ReferenceError: home is not defined from App 

मेरा प्रश्न है: मैं (प्रत्यक्ष या $controllerProvider.register()) angular.module.controller() का उपयोग कर नियंत्रकों कैसे रजिस्टर कर सकते हैं इस सेटअप निम्न त्रुटि उत्पन्न होता है का उपयोग करते हुए

angular.module('App.controllers', []) 
    .controller('home', function() { 
    $scope.property = true; 
    }]); 

angular.module('App', ['App.controllers']) 
    .config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', {templateUrl: 'partials/home.html', controller: home}); 
    }]); 

: मैं निम्नलिखित ऐसा करने में सक्षम होना चाहते हैं और मेरे ऐप में कहीं और पंजीकृत नियंत्रक का उपयोग करें।

मेरे प्रेरणा: मैं अपने नियंत्रकों के रूप में या तो वैश्विक निर्माता कार्यों का उपयोग कर या जटिल नेमस्पेसिंग (angularjs.org उपयोग पर उदाहरण के अधिकांश के रूप में) से बचने के लिए चाहते हैं। यदि मैं नियंत्रक को एकल चर नामों के रूप में पंजीकृत और उपयोग कर सकता हूं (जिन्हें वैश्विक दायरे में नहीं रखा जाता है) जो आदर्श होगा।

उत्तर

75

एक स्ट्रिंग पहचानकर्ता का उपयोग करने का प्रयास करें।

routeProvider.when('/', {templateUrl: 'partials/home.html', controller: 'home'});

जब आप एक शाब्दिक उपयोग करें, यह एक चर home कहा जाता है की तलाश में है, लेकिन वह इस मामले में मौजूद नहीं है।

+1

धन्यवाद, कि चाल किया:

या परिभाषित इस

function controllerName() { //your code here } 

की तरह अपने नियंत्रक इस संदर्भ लें। बहुत आसन। –

+1

उपरोक्त समाधान काम पर नहीं दिख रहा है ... मुझे "त्रुटि: तर्क 'फ़ोनListCtrl' एक फ़ंक्शन नहीं है, स्ट्रिंग मिला है"। मदद! – mpowered

+24

यदि आप नियंत्रक को फ़ंक्शन के रूप में परिभाषित करते हैं ('फ़ंक्शन PhoneListCtrl() {} '), तो आपको इसे फ़ंक्शन के रूप में संदर्भित करना होगा। आप .controller ('app.controller ('PhoneListCtrl', समारोह() के साथ यह निर्धारित करते हैं {})', आप इसे एक स्ट्रिंग के रूप संदर्भित होने चाहिए। –

संबंधित मुद्दे