2013-03-04 13 views
5

मैंने उदाहरणों का पालन किया है लेकिन जाहिर है कि संसाधन के प्रोटोटाइप में कस्टम विधि जोड़ने पर कुछ गलत है।

app.factory('Product',function ($resource,$cacheFactory) { 
     var Product = $resource('/the/url/:id', {id: '@id'}), 
      cache = $cacheFactory('Product'), 
      products; 
     Product.prototype.all = function(){ 
      products = cache.get('all'); 
      if(typeof products == 'undefined'){ 
       products = Product.query(); 
       cache.put('all',products); 
      } 
      return products; 
     }; 
     return Product; 
    }) 

नियंत्रक में मैं $scope.products = Product.all(); है, लेकिन मैं

+0

क्या आप $ संसाधन के प्रोटोटाइप को जोड़ने के उदाहरण के लिए लिंक प्रदान कर सकते हैं? मुझे यह कभी याद नहीं है। –

उत्तर

12

Product.prototype.all एक उदाहरण विधि परिभाषित करता है।

आपको इसे स्थिर विधि Product.all = function(){...] के रूप में परिभाषित करना चाहिए।

तभी आप इसे के साथ कॉल कर सकते हैं।

+0

धन्यवाद, मुझे नहीं पता कि इस बिंदु पर मैं उस तरह की गलती कैसे करता हूं XD – olanod

+3

समझने योग्य। ये साधारण बग अक्सर जटिल परियोजनाओं, या लंबे दिनों तक आसानी से फिसल जाती हैं। – Stewie

3

मुझे लगता है कि क्योंकि आप वास्तव में अभी तक एक उदाहरण की जरूरत नहीं है बस। आपको यह करने की आवश्यकता होगी:

$scope.products = new Product(); 
// now you can run the all function 
$scope.products.all() 

आपका अन्य विकल्प सेवा स्तर पर सभी() विधि को परिभाषित करना होगा। प्रोटोटाइप है, जो नए उत्पाद() के बाद ही उपलब्ध है को जोड़ने के बजाय, आप की तरह संशोधित कर सकता है:।

app.factory('Product',function ($resource,$cacheFactory) { 
    var Product = $resource('/the/url/:id', {id: '@id'}), 
     cache = $cacheFactory('Product'), 
     products; 
    Product.all = function(){ 
     products = cache.get('all'); 
     if(typeof products == 'undefined'){ 
      products = Product.query(); 
      cache.put('all',products); 
     } 
     return products; 
    }; 
    Product.prototype.$all = function() { 
     Product.all.call(this); 
    } 
    return Product; 
}) 

इस तरह आप संसाधन पर Product.all() और उत्पाद होगा $ सब() पर उदाहरणों।

+0

जब संसाधन इंजेक्शन दिया जाता है तो यह परिभाषित सेवा का उदाहरण नहीं है? सेवा को तत्काल किए बिना मैं यह कैसे कर सकता हूं? – olanod

+0

जब इसे इंजेक्शन दिया जाता है, तो आपको सेवा का एक उदाहरण मिलता है, हां, लेकिन संसाधन का उदाहरण नहीं। जवाब देने के लिए अद्यतन करना कि आप सेवा-स्तर को सभी() विधि कैसे कॉल कर सकते हैं। –

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