2017-08-30 15 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

をあきらめるようなビットのthatsページが完全に読み込まれたときに関数を起動する方法がいくつかあるに違いありません。

答えて

2

<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'); 
}); 
あなたは ng-initディレクティブを使用することをお勧めします
+1

はい、そのすでに試みたが、ページが – torbenrudgaard

0

Angular JS以外で試したことはありますか?

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

document.addEventListener('DOMContentLoaded', function(){ /*code*/ }); 
関連する問題