2016-11-28 8 views
1

Ich verwende $("#div1").load("aa.html") um "aa.html" in eine Webseite zu laden, es gibt eine "ng-repeat" Direktive in "aa.html", nach dem Laden wurde "ng-repeat" wasn Wird es nicht von angularjs ausgeführt, erscheint es direkt in DOM, aber wenn ich den Inhalt von "aa.html" direkt in $ ("# div1") platziere, kann es von angularjs ausgeführt werden. Wie kann ich anglejs diese "ng-repeat" ausführen lassen, nachdem jquery diese Seite geladen hat?"ng-repeat" asynchron ausführen

+0

Ich kann nicht ng-include verwenden, weil es Logik benötigt, um zu bestimmen, ob es geladen wird oder nicht. –

Antwort

2

Sie müssen die contorller

function registerController(moduleName, controllerName, template, container) { 
// Load html file with content that uses Ctrl controller 
//$(template).appendTo(container); 
// Here I cannot get the controller function directly so I 
// need to loop through the module's _invokeQueue to get it 
var queue = angular.module(moduleName)._invokeQueue; 
for (var i = 0; i < queue.length; i++) { 
    var call = queue[i]; 
    if (call[0] == "$controllerProvider" && 
     call[1] == "register" && 
     call[2][0] == controllerName) { 
     controllerProvider.register(controllerName, call[2][1]); 
    } 
} 

angular.injector(['ng', moduleName]).invoke(function ($compile, $rootScope) { 
    $compile($("#" + template))($rootScope); 
    $rootScope.$apply(); 
}); 

}

danach in Ihnen jquery Erfolg registrieren

registerController ('appname', 'Controller', "temolatename")

angular.element("element").scope().run(); 
    angular.element("element").scope().$apply(); 
Verwandte Themen