簡體   English   中英

在AngularJS中完全加載頁面后執行函數

[英]Executing a function once the page is fully loaded in AngularJS

我想在頁面完全加載后立即執行此功能。

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

如果我把這個功能作為一個按鈕(只是為了測試它),一切都很完美

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

但是,無論我做什么 - 我都無法自動執行此功能(當頁面完全加載且所有數據/元素都可用時)。

幸運的是Stack Overflow有很多關於頁面滿載的帖子,所以我試了很多但是沒有一個可以工作,它們都是在頁面仍然是空白的時候啟動它。

這些是我嘗試過的一些:

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

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

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

所以我唯一的想法是做一些丑陋的setTimeout(function(){ vm.pointInvoice() }, 3000); 黑客,但對我來說有點像放棄:-D

當頁面完全加載時,必須有一些方法來啟動一個功能....

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

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

定義此功能是您的控制器:

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

無論如何,您可以直接從控制器調用此功能。 一旦應用程序和控制器加載,它將被調用。

你嘗試過使用正確的angular事件嗎?

角度<1.6.X

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

角度> = 1.6.X

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

你有沒有嘗試過Angular JS之外的東西?

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM