Angular -如果控制器已经运行,防止重新加载
Angular - Prevent reload of controller if already running
我制作了一个带有多个锚的Angular应用。每个锚都用它的模板加载一个Angular控制器,加载什么由$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'
});
}]);
显然没有什么奇怪的,但我看到每次我点击一个锚点,Angular都会重新加载控制器,即使它之前是加载的。
所以我的问题是:有没有一种方法可以使用$routeProvider或其他Angular功能来检查控制器是否已经在运行,以防止其重新加载?
每次路由匹配时,该控制器实例就会运行——不管另一个路由是否有相同的控制器。你当然可以做一些工作来防止相同的控制器运行,但在你的情况下,这是完全没有必要的,因为你可以只有一个路由和一个可选参数application
:
.when('/home/:application?', {...})
然后在控制器中你可以输入:
.controller("ApioHomeController", function($routeParams){
if ($routeParams.application){
//...
}
})
相关文章:
- 创建新数据和加载现有数据需要单独的视图吗
- 钛 - HTTPClient:打开新的控制器加载
- 保持 JavaScript 在浏览器控制台中运行,即使在新的页面加载之后也是如此
- 路由到新页面时加载不起作用
- 如何在新窗口完成加载后执行某些内容
- 使用新标题重新加载 html 页面
- Primefaces在打开新页面时加载数据消息
- Wordpress音频播放器和平滑状态.在新页面重新加载播放器时调用什么回调函数
- 用新数据重新加载renderer3d
- 文本不被渲染后,新的页面加载- JQuery移动
- 需要在新标签中加载pdf/doc文件,而不是下载,只是想在浏览器中阅读
- 用新参数重新加载页面
- Js和CSS不检测新页面何时加载
- 在新页面上加载一个flash视频,它在上一页上的位置
- 在新窗口中加载代码编写器视图
- 在控制台中使用新脚本重新加载页面
- 如何在加载新页面后加载AJAX数据
- 如何使用jQuery在新窗口中加载页面,然后关闭它们
- Jquery没有看到新的HTML加载到对话框中
- 无法用新值重新加载JGrid