Ich habe eine Funktion innerhalb meiner Angular-Controller, I'd wie diese Funktion auf Dokument bereit ausgeführt werden, aber ich bemerkte, dass Angular es läuft, wie die dom erstellt wird.
function myController($scope)
{
$scope.init = function()
{
// I'd like to run this on document ready
}
$scope.init(); // doesn't work, loads my init before the page has completely loaded
}
Weiß jemand, wie ich das anstellen kann?
Wir können die Methode "angular.element(document).ready()" verwenden, um Callbacks anzuhängen, wenn das Dokument fertig ist. Wir können den Callback im Controller einfach wie folgt anhängen:
angular.module('MyApp', [])
.controller('MyCtrl', [function() {
angular.element(document).ready(function () {
document.getElementById('msg').innerHTML = 'Hello';
});
}]);
Siehe diesen Beitrag https://stackoverflow.com/questions/15458609/angular-js-how-to-execute-function-on-page-load
Für schnelles Nachschlagen:
// register controller in html
<div data-ng-controller="myCtrl" data-ng-init="init()"></div>
// in controller
$scope.init = function () {
// check if there is query in url
// and fire search in case its value is not empty
};
Auf diese Weise müssen Sie nicht warten, bis das Dokument fertig ist.
Angular initialisiert automatisch beim Ereignis DOMContentLoaded
oder wenn
das angular.js-Skript ausgewertet wird, wenn zu diesem Zeitpunkt document.readyState auf 'complete' gesetzt ist. An diesem Punkt sucht Angular nach der ng-app Direktive, die die Wurzel Ihrer Anwendung bezeichnet.
https://docs.angularjs.org/guide/bootstrap
Das bedeutet, dass der Controller-Code ausgeführt wird, nachdem das DOM fertig ist.
Es ist also einfach $scope.init()
.