2017-08-30 218 views
2

我希望在頁面完全加載後立即執行此功能。在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> 

但是,無論我做什麼 - 我根本無法得到這個自動執行我的功能(當頁面完全加載並且所有數據/元素都可用時)。

幸運我堆棧溢出有很多關於頁面完全加載的帖子,所以我嘗試了一大堆他們但都沒有工作,他們都在頁面仍然空白時觸發該功能。

這些都是一些我已經試過的國家:

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

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

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

所以我留下唯一的想法是做一些醜陋的setTimeout(function(){ vm.pointInvoice() }, 3000);技巧,但對我來說那是一個有點像放棄:-D

有必須是某種方式來啓動頁面完全加載時的功能....

回答

2

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

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

定義這個功能是你的控制器:

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

無論如何,你可以從你的控制器直接調用此函數。一旦應用程序和控制器加載完成,它將被調用。

+0

我也會試試看 – torbenrudgaard

+1

我把它添加到我需要的功能去和做的東西表火災 - 和有效!!!非常感謝你@Mistralis! '

torbenrudgaard

0

您是否嘗試使用正確的angular事件?

角< 1.6.x版

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

角> = 1.6.x版

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

是試過了,但是當頁面仍是空白(因爲某些原因) – torbenrudgaard

0

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

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

document.addEventListener('DOMContentLoaded', function(){ /*code*/ }); 
相關問題