在 AngularJS 中完全加载页面后执行函数

tor*_*ard 5 javascript function-call angularjs angularjs-1.6

我想在页面完全加载后立即执行此功能。

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

如果我将该功能作为按钮(只是为了测试它),则一切正常

<button ng-click="vm.pointInvoice()">OPEN AND POINT TO INVOICE</button>
Run Code Online (Sandbox Code Playgroud)

但是,无论我做什么 - 我根本无法让它自动执行我的功能(当页面完全加载并且所有数据/元素都可用时)。

幸运的是 Stack Overflow 上有很多关于页面已满载的帖子,所以我尝试了一大堆帖子,但没有一个有效,它们都在页面仍然空白时触发了该功能。

这些是我尝试过的一些:

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

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

$scope.$on('$stateChangeSuccess', function () {
    debugger;
});
Run Code Online (Sandbox Code Playgroud)

所以我剩下的唯一想法就是做一些丑陋的setTimeout(function(){ vm.pointInvoice() }, 3000);黑客,但对我来说这有点像放弃:-D

当页面完全加载时,必须有某种方法来触发一个函数......

Mis*_*lis 5

您可能想使用该ng-init指令:

<div ng-init="init()">...</div>
Run Code Online (Sandbox Code Playgroud)

定义这个函数是你的控制器:

$scope.init = function() {
    alert("Page is fully loaded!);
}
Run Code Online (Sandbox Code Playgroud)

无论如何,您可以直接从控制器调用此函数。一旦应用程序和控制器加载,它将被调用。