2013-06-03 44 views
9

Ben angularjs öğrenmeye çalışıyorum ve ben dinamik olarak bazı DOM öğelerini derlemek çalışıyorum tanımlı değil ben demo denedim:

try { 
     var templateHTML = angular.element('<p>{{total}}</p>'), 
      scope = ....; 

     var clonedElement = $compile(templateHTML)(scope, function(clonedElement, scope) { 
      //attach the clone to DOM document at the right place 
     }); 

     //now we have reference to the cloned DOM via `clone` 
} catch (ex) { 
alert(ex.message); 
} 

ancak tüm Döndüğüm bir

YARDIM "$ derleme tanımlı değil" dır!

+1

, (ör kontrolör ('mycontroller', function ($ derleme) kontrolöre içine derlemek enjekte yaptım {...}). –

cevap

6

nereden bu kodu arıyorsun? Açısal çerçevenin dışında olduğunu angular.element (...) kullanımıyla kabul etmek güvenli midir? Eğer öyleyse

, bu kullanabilirsiniz: Eğer değilse

// Split across two lines for readability... 
angular.element(<something within Angular's scope>) 
    .injector().get('$compile')(...) 

, sadece $ enjekte kontrolör/direktif/hizmete derlemek gerekebilir.

8

bir yönergede derlemek $ kullanılması için bir örnek kod. Temel olarak & öğesinin önüne geçerek öğeyi DOM'a ekleyin (görünmez tutmak isteyebilir), daha sonra bir bulucu kullanarak derleyi çalıştırın .. rtcherry tarafından belirtildiği gibi, $ derlemesi enjekte edilmelidir. gibi denetleyici bakmak kalanını ne yapar

 // 
     componentModule.directive('getCompilerWk', function($compile) { 
      return { 
      restrict: 'A', 
      link: function(scope, elm, attr) { 
       elm.click(function(){ 
        $(body).append(templateHTML); 
        $compile($(body).find('p'))(scope); 

       }) 
      } 
      }; 
     });