我想在页面完全加载后立即执行此功能。
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
当页面完全加载时,必须有一些方法来启动函数....
答案 0 :(得分:2)
您可能想要使用ng-init
指令:
<div ng-init="init()">...</div>
定义此功能是您的控制器:
$scope.init = function() {
alert("Page is fully loaded!);
}
无论如何,您可以直接从控制器调用此功能。一旦应用程序和控制器加载,它就会被调用。
答案 1 :(得分:0)
您是否尝试使用正确的angular
活动?
Angular&lt; 1.6.x版强>
angular.element(document).ready(function () {
alert('page loading finshed');
});
Angular&gt; = 1.6.X
angular.element(function () {
alert('page loading finshed');
});
答案 2 :(得分:0)
你有没有尝试过Angular JS以外的东西?
$(document).ready(function(){ /*code*/ }); //with jQuery
document.addEventListener('DOMContentLoaded', function(){ /*code*/ });