javascript - Angular - 如果 Controller 已在运行,则防止重新加载

标签 javascript jquery angularjs

我制作了一个带有多个 anchor 的 Angular 应用程序。每个 anchor 都会使用其模板加载 Angular Controller ,加载内容由 $routeProvider 定义,代码如下:

ApioApplication.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/home',{
    templateUrl : 'systemApps/home/app.home.html',
      controller : 'ApioHomeController',
      reloadOnSearch: false
    }).when('/home/:application',{
      templateUrl : 'systemApps/home/app.home.html',
      controller : 'ApioHomeController',
      reloadOnSearch: false
    }).when('/wall',{
      templateUrl : 'systemApps/wall/app.wall.html',
      controller : 'ApioWallController',
      reloadOnSearch: false
    }).when('/events',{
      templateUrl : 'systemApps/events/app.events.html',
      controller : 'ApioEventsController',
      reloadOnSearch: false
    }).otherwise({
      redirectTo: '/home'
    });
}]);

显然没有什么奇怪的,但我发现每次我点击 anchor 时 Angular 都会重新加载 Controller ,即使它之前已经加载过。
所以这是我的问题:有没有办法使用 $routeProvider 或其他一些 Angular 功能来检查 Controller 是否已经在运行以防止其重新加载?

最佳答案

每次路由匹配时,该 Controller 实例都会运行 - 另一个路由是否具有相同的 Controller 并不重要。您绝对可以做一些奇怪的事情来阻止同一个 Controller 运行,但在您的情况下,这是完全没有必要的,因为您可以只有一个路由和一个可选参数application:

.when('/home/:application?', {...})

然后在 Controller 中你可以这样做:

.controller("ApioHomeController", function($routeParams){
   if ($routeParams.application){
     //...
   }
})

关于javascript - Angular - 如果 Controller 已在运行,则防止重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30383933/

相关文章:

javascript - Jquery 加载更多有关滚动速度的信息

javascript - 滚动div中的绝对定位下拉菜单

javascript - 使用 Jquery 加载页面时的宽度和高度问题

javascript - 当发现有多个重复值时,仅添加一次行 javascript

Javascript 将 [url=] 转换为 html 链接

javascript - 如何制作字体大小的自定义范围 slider ?

javascript - 如何检查reactjs映射中的未定义

javascript - AngularJS 和 sidr 库

javascript - 如何模拟在 AngularJS Jasmine 单元测试中返回 promise 的服务?

javascript - 浏览器未一致地显示动态插入的 div