2016-04-06 15 views
0

Ich versuche Winkel zu laden -außen - dynamisch eine benutzerdefinierte Richtlinie aber die benutzerdefinierte Richtlinie nicht trotz geladen ich verwendet habe $compile wie die folgenden: die benutzerdefinierte Richtlinie ist:Benutzerdefinierte Richtlinie von jQuery nicht richtig geladen

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

und hier der Ort, wo ich bin Laden der Richtlinie dynamisch:

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(); 
     }); 
    } 
]); 
} 

Bitte beachten Sie, dass {{name}} im dynamischen HTML korrekt geladen wird ly, aber nicht die benutzerdefinierte Direktive. Die vollständige Demo ist in this 'plnkr.co' link

Wenn Sie die Korrektur direkt in der "PLNKR" Verbindung oben tun konnten, würde ich das schätzen.

Antwort

0

Der Code erstellt die mydirective-Direktive nicht, da sie nicht Teil des ng Moduls ist. Fügen Sie das Modul mit der Direktive zur Abhängigkeitsliste des neuen Injektors hinzu.

//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(); 
    } 
]); 
} 

Die angular.injector Funktion erzeugt immer einen neuen Injektor und es muss alle Abhängigkeiten in der Abhängigkeitsliste.

+0

Es funktioniert! Danke @georgeawg Ich habe gerade den Tumblr zum eigentlichen Namen geändert. Plotter – Nahed

+0

Eine weitere Frage bitte, wenn ich templateUrl benutze, ist es wieder nicht die Vorlage zu übersetzen es zeigt {{name}}, und es ist nur wenn dynamisch mit dem gleichen laden Weg aber mit templateUrl hier das Beispiel: http://plnkr.co/edit/L82o3zVbM5p76Kyfp8WE?p=preview – Nahed

+0

Beachten Sie in meinem Beispiel die vereinfachte kompilieren und anwenden. Ihr PLNKR hat zwei '$ compile's und ein rohes' setTimeout'. All das ist unnötig. – georgeawg