2017-08-22 3 views
0

私は単一のページアプリケーションを使用していますが、状態に関係なく誰かが私のURLを開くたびにコントローラを1回だけロードします。1ページのアプリケーションのページロードでコントローラをデフォルトでロードする方法

私は、コントローラにこのようなものがあります:私は誰かが私のページのいずれかを開いたときに、これは一度だけロードされるようにしたい

app.controller('someController', ['$scope', function($scope){ 
    $scope.somefunction = function(){ 
     console.log("Some function is called "); 
    } 
}]) 

を。

は現在、私はこのような何か私のheader.htmlファイルの下にこれを追加しようとしました:

<div class="" ng-controller="someController"></div> 

私はページの任意のためにこのコントローラを呼び出すことができます。この方法はしかし、問題は、それがあれば毎回呼び出されるということですユーザーの変更ページ。

私は、app.jsや他のいくつかのよりよい方法で、この関数をページロード時に一度だけ呼び出す方法があるかもしれないと思います。

誰でも私を助けてください。

+0

私はすでにあなたがルーターを使用し、すべてのアプリケーションをラップする必要があります – Hitmands

+0

(またはui.routerルートをNG)ルーティングライブラリを使用この共通コントローラを持つ抽象的なルートで – undefined

+1

を使用しています – Vivz

答えて

3

あなたが望むもののために、あなたはui-viewの親のdivの上にコントローラを置く必要があるように聞こえる:

<div class="container" ng-controller="someController"> 
    <div ui-view></div> 
</div> 
+1

ありがとう、これは完璧な解決策と思われます。 – undefined

0

あなたはクッキーを使用することができます。関数内では、一度ロードされるとクッキーを保存することができ、ロードされるたびにクッキーをチェックし、そのクッキーに基づいてコードを実行したり、コードを実行したりすることができます。

別の方法として、initで関数を呼び出すことができます。

<div class="" ng-controller="someController" data-ng-init="somefunction()"></div> 
関連する問題