2017-08-22 4 views
0

Ich habe eine einzelne Seite Anwendung, und ich möchte einen Controller nur einmal geladen werden, wenn jemand meine URL unabhängig von dem Zustand öffnet.So laden Sie einen Controller standardmäßig für jede Seite laden für eine einzelne Seite app

Ich habe einen Controller etwas wie folgt aus:

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

Ich will das nur einmal geladen werden, wenn jemand irgendwelche meiner Seite öffnet.

Zur Zeit habe ich versucht, das unter meiner header.html Datei, so etwas fügen:

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

So kann ich diesen Controller für eine der Seite aufrufen können, aber das Problem ist, dass es jedes Mal aufgerufen wird, wenn Benutzer ändert die Seite.

Ich denke, es gibt möglicherweise eine Möglichkeit, diese Funktion unter app.js oder andere eine bessere Möglichkeit, nur einmal beim Laden der Seite aufrufen.

Kann mir bitte jemand hier helfen.

+0

eine Routing-Bibliothek verwenden (ng-Route oder ui.router) – Hitmands

+0

Ich bin schon mit diesen – undefined

+1

außerhalb der ng-Ansicht oder ui-Ansicht, welche die gemeinsame Steuerung Setzen – Vivz

Antwort

3

Es klingt wie für das, was Sie wollen, sollten Sie den Regler auf der übergeordneten div des ui-view setzen:

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

Danke, das scheint perfekte Lösung. – undefined

0

Sie Cookies verwenden können. Innerhalb der Funktion können Sie das Cookie speichern, sobald es geladen ist, und jedes Mal, wenn es geladen ist, können Sie das Cookie überprüfen und basierend auf diesem Cookie lesen, dass Sie den Code ausführen oder den Code nicht ausführen können.

Eine andere Möglichkeit ist, dass Sie die Funktion init aufrufen können.

<div class="" ng-controller="someController" data-ng-init="somefunction()"></div> 
Verwandte Themen