2013-06-01 19 views
31

के साथ नियंत्रक में सेवा इंजेक्शन मैंने अंगुलरजेएस में एक सेवा लिखी है, लेकिन मैं इसे चीजों को करने के कोणीय-बीज तरीके से काम नहीं कर सकता।AngularJS

नियंत्रक कोड इस प्रकार है:

/*function PhotoCtrl($scope, Photo) { 
    $scope.photos = Photo.query(); 
}*/ 

angular.module('myApp.controllers', []). 
    controller('PhotoCtrl', [function($scope,Photo) { 
    $scope.photos = Photo.query(); 
}]) 
.controller('MyCtrl2', [function() { 

}]); 

ध्यान दें कि टिप्पणी की धारा ठीक काम करता है, लेकिन मैं (अनुशंसित) दूसरा तरीका की तरह कुछ हद तक इसे संभाल करना चाहते हैं।

त्रुटि मैं कि फोटो, अपरिभाषित है तो मेरा अनुमान है (इंजेक्शन) यह गलत है पास करने का मेरा तरीका होगा, लेकिन मैं बाहर कैसे इसे सही ढंग से

+0

जहाँ तक मुझे पता के रूप में पहली विधि ठीक है, मुझे विश्वास है कि क्या उदाहरण के लिए सरकारी ट्यूटोरियल में दिखाया गया है

भी यहाँ एक उदाहरण देखें। क्या आपके पास कोई स्रोत है जो अन्यथा इंगित करता है? –

+0

"नोट: दस्तावेज में कई उदाहरण वैश्विक दायरे में कार्यों का निर्माण दिखाते हैं। यह केवल प्रदर्शन उद्देश्यों के लिए ......." http://docs.angularjs.org/guide/dev_guide से है। mvc.understanding_controller ऐसा कहता है। मुझे गलत मत समझो, मुझे लगता है कि पहला पढ़ने के लिए आसान है, लेकिन मैं समझता हूं कि नाम अंतर – Maarten

+0

बेहतर हो सकता है यदि आप कंट्रोलर फ़ंक्शन परिभाषा के आसपास रैपिंग स्क्वायर ब्रेसेस को हटाते हैं '[फ़ंक्शन ($ स्कोप, फोटो) {}]' आप 'ठीक भी होगा, लेकिन अगर आप अपना कोड कम करने की योजना बनाते हैं तो ऐसा न करें। यहां [कोणीय में निर्भरता इंजेक्शन] के बारे में अधिक जानकारी (http://docs.angularjs.org/guide/di) –

उत्तर

53

करने के लिए आप परिभाषित करने की जरूरत नहीं मिल रहा है है Photo सेवा:

angular.module('myApp.controllers', []) 
    .service('Photo', ['$log', function ($log) { 

     return { 
      query: function() { 
       // the query code here. 
      } 
     }; 

    }]) 
    .controller('PhotoCtrl', ['$scope', 'Photo', function ($scope, Photo) { 
     $scope.photos = Photo.query(); 
    }]) 
    .controller('MyCtrl2', [function() { 

    }]); 

संदर्भ के एक जोड़े:

उपरोक्त नमूना कोड में मैंने पैरामीटर एलियासिंग का उपयोग किया, जो मैं आपके कोड को छोटा करते समय समस्याओं से बचने के लिए सुझाव देता हूं। AngularJS multiple uses of Controller and rootScope

और एक Plunker यहाँ: http://plnkr.co/edit/Bzjruq

+1

याद दिलाने के लिए धन्यवाद मैंने सेवा परिभाषित की है, लेकिन आपके उत्तर ने इसे ठीक किया है क्योंकि आपने नियंत्रक लाइन के लिए सही वाक्यविन्यास दिया, मुझे नहीं पता था कि मुझे उस तरह के दायरे और फोटो को पास करना पड़ा था, मेरी समस्या को देखने के लिए मेरी तुलना में इसकी तुलना करें – Maarten

+0

खुशी है कि मैं मदद कर सकता हूं, और AngularJS में आपका स्वागत कर सकता हूं। –

+1

ध्यान दें कि आपको – kayfun