如何为单页应用程序的任何页面加载默认加载控制器

How to load a controller by default for any page load for a single page app

我有一个单页应用程序,我希望控制器只在有人打开我的 url 时加载一次,而不管状态如何。

我有一个这样的控制器:

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 下添加这个函数,或者其他一些更好的方法在页面加载时只调用一次。

谁能帮帮我。

听起来像你想要的,你应该把控制器放在 ui-view 的父 div 上:

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

您可以使用cookie。在函数内部,您可以在加载 cookie 后存储它,每次加载它时,您都可以检查 cookie,并根据读取的 cookie 执行代码或不执行代码。

另一种方法是您可以在初始化时调用该函数。

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