2017-08-30 2 views
2

Je voudrais exécuter cette fonction dès que la page est complètement chargée.Exécution d'une fonction une fois la page entièrement chargée dans AngularJS

vm.pointInvoice =() => { 
    if ($stateParams.property == "INVOICE") { 
     vm.invoiceEdit($stateParams.checkin) 
     vm.invoiceFocus = true; 
     vm.receiptFocus = false; 
    } 
} 

Si je mets la fonction comme un bouton (juste pour le tester), tout fonctionne parfaitement

<button ng-click="vm.pointInvoice()">OPEN AND POINT TO INVOICE</button> 

Mais, peu importe ce que je fais - je ne peux pas obtenir ceci pour exécuter ma fonction automatiquement (lorsque la page est entièrement chargée et que toutes les données/éléments sont disponibles). Lucky me Stack Overflow avait beaucoup de messages à propos de la page complètement chargée alors j'ai essayé tout un tas d'entre eux mais aucun ne fonctionne, ils tirent tous sur la fonction alors que la page est encore vierge.

Voici quelques-uns de ceux que j'ai essayé:

$scope.$on('$viewContentLoaded', function(){ 
    debugger; 
}); 

angular.element(document).ready(function() { 
    debugger; 
}); 

$scope.$on('$stateChangeSuccess', function() { 
    debugger; 
}); 

donc ma seule idée reste est de faire un peu de bidouille setTimeout(function(){ vm.pointInvoice() }, 3000); laid, mais pour moi thats un peu comme renoncer à :-D

Il DOIT être un moyen de déclencher une fonction lorsque la page est entièrement chargée ....

Répondre

2

Vous pouvez utiliser la directive ng-init:

<div ng-init="init()">...</div> 

Définir cette fonction est votre contrôleur:

$scope.init = function() { 
    alert("Page is fully loaded!); 
} 

Quoi qu'il en soit, vous pouvez appeler cette fonction directement à partir de votre contrôleur. Il sera appelé une fois que l'application et le contrôleur sont chargés.

+0

Im va donner un essai – torbenrudgaard

+1

je l'ai ajouté à la table où je devais la fonction d'aller faire des choses - et ÇA A MARCHÉ!!! Merci beaucoup @Mistralis !! '

' – torbenrudgaard

0

Avez-vous essayé d'utiliser le bon événement angular?

angulaire < 1.6.X

angular.element(document).ready(function() { 
    alert('page loading finshed'); 
}); 

angulaire> = 1.6.X

angular.element(function() { 
    alert('page loading finshed'); 
}); 
+1

Oui essayé déjà, mais se déclenche lorsque la page est toujours vide (pour une raison quelconque) – torbenrudgaard

0

Avez-vous essayé quelque chose en dehors de Angular JS?

$(document).ready(function(){ /*code*/ }); //with jQuery 

document.addEventListener('DOMContentLoaded', function(){ /*code*/ });