Wie kann ich call link-Richtlinie-Funktion nach der controller-code ausgeführt wurde
Ich versuche, die render-code in der link-Funktion nach der Steuerung löst der http-Aufruf, aber der link Funktion wird aufgerufen, bevor das. Wie kann ich call-Verbindung nach $scope.menuHtml
gesetzt wurde?
HTML:
<div id="testD" nav-menu-output="parseMenuJsonAndOutPutMenu()"></div>
RICHTLINIE:
return {
restrict: 'A',
controller: ['$scope', '$q','$http', function ($scope, $q,$http) {
$http.get('ajax/menu' ).then(function (data) {
$scope.menuHtml = generateHtmlMenu(data);
});
}],
link: function(scope, element, attr) {
var templateString = scope.menuHtml;
var compiledTemplate = $compile(templateString)(scope);
compiledTemplate.appendTo("#testD");
}
}
+1 ich hab dieses problem auf meinem frischer Zeit mit angularjs. Aber ich hab die Antwort
InformationsquelleAutor FutuToad | 2014-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde vorschlagen, mit
scope.$watch()
und erneutes ausführen der kompilierten template-code. Auf diese Weise können Sie so viele Anfragen, um das Menü Endpunkt, wie Sie wollen und dein template neu kompiliert werden.Hier finden Sie weitere Informationen über die Uhr:
http://docs.angularjs.org/api/ng/type/$rootScope.Scope#$sehen
Hier ist eine aktualisierte version, die eigentlich funktionieren:
Gerade aktualisiert mit einem code snippet. Probieren (hat nicht wirklich ausführen, so könnte es kleinere Probleme geben) und sehen, ob das funktioniert für Sie. Auch, ändern Sie bitte die appendTo, um etwas anderes zu verhindern, dass Duplikate. Vielleicht verwenden Sie einen div-container und verwenden .html().
InformationsquelleAutor bjtitus
Können Sie es mit
async: false
Bitte Versuchen, diesen code anstelle des Codes,
hmm, auch mit dieser Art der link läuft immer noch erste
haben Sie es mit debugger?
yep habe ich.
InformationsquelleAutor Ramesh Rajendran