2016-04-06 24 views
0

ben açısal -outside yüklemeye çalışıyorum yüklenmemiş dinamik özel direktifi ancak özel direktifi ben şöyle $compile kullandık rağmen yüklü değilÖzel direktifi doğru

function showresultcust() { 
angular.injector(['ng']).invoke(['$compile', 
    function ($compile) { 
     var scope = angular.element(document.getElementById("test1")).scope(); 
     var _html = '<div>{{name}}-</div><div mydirective >Not Succeed</div>'; 
     //var _html='<div >{{loaded}}</div>'; 
     var obj = $('#content'); 
     $('#content').html($compile(_html)(scope)); 
     // compile!!! 
     $compile(obj.contents())(scope); 
     scope.$digest(); 
     setTimeout(function() { 
      scope.$apply(); 
     }); 
    } 
]); 
} 

dinamik HTML {{name}} doğru yerleştirildiğinden emin unutmayın: burada

app.directive('mydirective',function(){ 
    return { 
    template: '<div>Succeeded !</div>', 
    } 
}) 

ve Burası dinamik yönergesi yükleme am ly, ama özel direktif değil. Tüm demo, this 'plnkr.co' link

Eğer düzeltmeyi doğrudan yukarıdaki 'plnkr' bağlantısında yapabiliyorsanız, bunu takdir ediyorum.

cevap

0

Kod, ng modülünün bir parçası olmadığından, mydirective yönergesini derlemiyor. Direktifi içeren modülü yeni enjektörün bağımlılık listesine ekleyin.

//NOT this 
//angular.injector(['ng']).invoke(['$compile', 

//Do this 
angular.injector(['ng','tumblr']).invoke(['$compile', 
    function ($compile) { 
     var scope = angular.element(document.getElementById("test1")).scope(); 
     var _html='<div>{{name}}-</div><div mydirective >Not Succeed</div>'; 
     $('#content').html($compile(_html)(scope)); 
     scope.$apply(); 
    } 
]); 
} 

angular.injector işlevi her zaman yeni bir enjektör oluşturur ve bu bağımlılık listesindeki tüm bağımlılıklarını ihtiyacı vardır.

+0

Çalışıyor! Teşekkürler @georgeawg ben sadece gerçek isim plunker tumblr değişti var – Nahed

+0

Bir daha soru lütfen, ben templateUrl kullandığınızda tekrar {{name}} gösteren şablonu tercüme etmiyoruz, ve sadece dinamik yük ile aynı olduğu zaman Buradaki örnek şu şekildedir: http://plnkr.co/edit/L82o3zVbM5p76Kyfp8WE?p=preview – Nahed

+0

Örneğimde, derlemeyi basitleştirin ve uygulayın. Sizin plnkr'ınızda iki '$ compile' ve raw' setTimeout' vardır. Bütün bu şeyler gereksiz. – georgeawg