2016-07-01 11 views
0

Ich möchte ein ähnliches Ergebnis wie Codepen oder Jsfiddle erreichen, wo Sie einen Code eingeben können und es anschließend ausgeführt wird.Ausführen von Angular Code aus Strings

http://jsfiddle.net/Lvc0u55v/6313/

var myApp = angular.module('myApp',[]); 

// Lists all registered Directives for any angular module.. 
function Directives(module) { 
    var directives = []; 
    var invokes = angular.module(module)._invokeQueue; 
    for (var i in invokes) { 
     if (invokes[i][1] === "controller") directives.push(invokes[i][2]); 
    } 
    return directives; 
} 
myApp.controller('myCtrl',function($scope,$compile,$timeout,$rootScope,$injector){ 
    var module = "angular.module('myApp').controller('myDynamicCtrl', function($scope) {console.log('hello');window.myScope = $scope; $scope.hello = 'User!';});"; 
    (new Function(module)()); 

    // I can access the new controller via: 
    myApp._invokeQueue[1][2][1]($scope); 
    console.log(window.myScope); 

    var html = angular.element("<div ng-controller='myDynamicCtrl'; id='appended'>Hello {{hello}}</div>"); 
    angular.element(document.getElementById('target')).append(html); 

    var scope = angular.element(document.getElementById('appended')).scope(); 
    angular.element(document.getElementById('appended')).replaceWith($compile(html)(window.myScope)); 


}); 

kann ich den Controller in einem String definiert auszuführen und es richtig zu meinem Winkelmodul registriert wird.

Wenn ich es jedoch mit einem HTML-Element verknüpfen, ist der neu erstellte Controller nicht definiert.

Ich möchte das gleiche Ergebnis auch für die Direktiven erreichen (definiere Direktive als String, führe es aus und kompiliere einen HTML-Code damit).

Antwort

Verwandte Themen