8

मैं कोणीय सेवा के माध्यम से निर्देश संकलित करने की कोशिश कर रहा हूं लेकिन दुर्भाग्यवश यह काम नहीं करता है। विचार पॉपअप में त्रुटियों को दिखाने के लिए है।कोणीय में सेवा के माध्यम से निर्देश संकलित करें

मैं संशोधित किया $ exceptionHandler सेवा:

crm.factory('$exceptionHandler', function(popup) { 
    return function(exception) { 
     popup.open({message: exception}); 
    } 
}); 

पॉपअप सेवा इस तरह दिखता है:

crm.factory('popup', function ($document) { 
    return { 
     open: function (data) { 
      var injector = angular.element(document).injector(), 
       $compile = injector.get('$compile'), 
       template = angular.element('<popup></popup>'); 

      // var ctmp = $compile(template.contents()); 
      $compile(template.contents()); 

      $document.find('body').append(template); 
     } 
    }; 
}); 

और मुझे नहीं लगता कि यह है कि इस के लिए एक अच्छा विचार था हार्ड कोड $ संकलित सेवा (लेकिन मुझे कोई विचार नहीं है कि इसे कोणीय में कैसे महसूस किया जाए):

$compile = injector.get('$compile') 

पॉपअप निर्देश:

crm.directive('popup', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     templateUrl: '/public/js/templates/common/popup.html', 
     link: function() { 
      console.log('link()'); 
     }, 
     controller: function() { 
      console.log('ctrl()'); 
     } 
    }; 
}); 

हो सकता है वहाँ यह करने के लिए कुछ अन्य तरीकों से कर रहे हैं? धन्यवाद।

उत्तर

1

आप अपनी सेवा में सीधे $compile इंजेक्षन कर सकते हैं, यह भी आप काफी सही ढंग से $compile उपयोग नहीं कर रहे:

//commented alternative lines for allowing injection and minification since reflection on the minified code won't work 
//crm.factory('popup', ['$document', '$compile', function ($document, $compile) { 
crm.factory('popup', function ($document, $compile) { 
    return { 
     open: function (data) { 
      var template = angular.element('<popup></popup>'), 
       compiled = $compile(template); 

      $document.find('body').append(compiled); 
     } 
    }; 
}); 
//closing bracket for alternative definition that allows minification 
//}]); 
+2

नहीं, मैं इसे सीधे उपयोग नहीं कर सकते। त्रुटि इस तरह दिखती है: "असहज त्रुटि: परिपत्र निर्भरता: $ संकलित <- पॉपअप <- $ अपवाद हैंडलर <- $ रूटस्कोप" – user2573863

+1

कोणीय 1.2 में काम नहीं करता है, यह ठीक करने के लिए पैरामीटर – perrohunter

+3

के दायरे के लिए पूछता है कि आप इंजेक्ट कर सकते हैं 'रूट रूटस्कोप 'और' $ rootScope। $ new()' नया स्कोप बनाने के लिए, उत्तर अपडेट किया गया। – Less

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