2013-03-07 6 views
15

मुझे कोणीय में हर जगह उपलब्ध एक विधि पंजीकृत करने की आवश्यकता है। इस विधि में 2 तर्क हैं (संसाधन आईडी, हटाने की सफलता पर कॉलबैक) और यह वास्तव में आइटम को हटाने के लिए संसाधन प्रदाता का उपयोग करता है।

फिर इसे पंजीकृत करने के लिए, मुझे यह आवश्यक है कि angularjs मुझे $rootScope और MyResourceProvider इंजेक्ट करे। मेरा पहला विचार यह था कि मेरे होम पेज नियंत्रक में:

 
    var HomeCtrl = function ($rootScope, MyResourceProvider) { 
     $rootScope.confirmAndDeletePackage = function (sId, fCallback) { 
      // do some stuff 
      MyResourceProvider.delete({id: sId}, fCallback); 
     } 
    } 

यहां वास्तव में मेरी समस्या शुरू होती है। यह नियमित नेविगेशन (होम -> सूची -> चयन -> हटाएं) में ठीक काम करता है लेकिन यदि उपयोगकर्ता सीधे उस पृष्ठ तक पहुंचता है जहां हटाए गए बटन को होम पेज के माध्यम से गुजरने के लिए उपलब्ध है, तो यह विधि उपलब्ध नहीं होगी (क्योंकि HomeController प्रारंभ नहीं किया गया है) ...

तो, मेरा प्रश्न यह है कि मैं यह कोड कोड को स्थानांतरित कर सकता हूं ताकि यह सुनिश्चित किया जा सके कि यह हमेशा एप्लिकेशन बूटस्ट्रैप पर निष्पादित किया जाएगा।

मैं myApp.config() पर लेकिन/सफलता ओ डब्ल्यू कोशिश की ...

किसी भी विचार?

+3

आप इसे किसी सेवा में क्यों नहीं कर सकते हैं और उस सेवा को इंजेक्ट करते हैं, हर जगह आपके पास डिलीट बटन है और उस सेवा पर आवश्यक फ़ंक्शन कॉल करें? – ganaraj

+1

क्योंकि आपने मुझे पहले नहीं बताया था :)! thx, मैं एक सेवा में चले गए और मैं इसे हर जगह प्राप्त कर सकता हूं मुझे चाहिए और यह ठीक काम करता है! – poussma

उत्तर

40

जैसा कि @ganaraj टिप्पणियों में उल्लिखित है, एक सेवा शायद इसके लिए बेहतर विकल्प है।

हालांकि, अपने प्रश्न का उत्तर देने के लिए, आप run() विधि का उपयोग कर सकते हैं।

myApp.run(function($rootScope, MyResourceProvider) { 
    $rootScope.confirmAndDeletePackage = function (sId, fCallback) { 
     // do some stuff 
     MyResourceProvider.delete({id: sId}, fCallback); 
    } 
}) 

रन() सभी मॉड्यूल लोड होने के बाद बुलाया जाता है।

+9

+1 यह पूछे गए प्रश्न का सही उत्तर है ... भले ही * वास्तविक * उत्तर "इस तरह से ऐसा न करें"। ;) हाहा। –

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