Javascript 具有相同控制器实例的角度routeprovider
我有一个角度应用程序,我使用routeprovider指向不同的模板。列表模板和地图模板。这些模板具有与其关联的控制器。 问题是,当我更改路由时,当前控制器实例被销毁,并且当前模板的新控制器实例被重新初始化。这是一个问题,因为地图模板会启动openlayers地图,而openlayers地图在浏览器中非常繁忙 路由提供者:Javascript 具有相同控制器实例的角度routeprovider,javascript,angularjs,Javascript,Angularjs,我有一个角度应用程序,我使用routeprovider指向不同的模板。列表模板和地图模板。这些模板具有与其关联的控制器。 问题是,当我更改路由时,当前控制器实例被销毁,并且当前模板的新控制器实例被重新初始化。这是一个问题,因为地图模板会启动openlayers地图,而openlayers地图在浏览器中非常繁忙 路由提供者: app.config(['$routeProvider', function ($routeProvider) { $routeProvider.
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/list', {
reloadOnSearch: false,
templateUrl: '/listTpl.html'
}).
when('/map/', {
reloadOnSearch: false,
templateUrl: '/mapTpl.html'
})
.otherwise({
redirectTo: '/list'
});
});
}]);
MapTpl.html
script type="text/ng-template" id="/mapTpl.html">
<div ng-controller="mapController" class="map">
html stuff
</div>
script type=“text/ng template”id=“/mapTpl.html”>
html内容
那么有没有办法持久化这些控制器,让routeprovider在这些实例之间切换
谢谢大家! 为什么不使用路线配置的
控制器属性?我真的不认为ng controller
属于具有路由的应用程序。有两种方法:拥有一个承载控制器的父状态,而路由将是没有自己控制器的子状态;或者创建一个承载共享对象的服务。@VladimirM我认为ngRoute
不支持子路由的想法<另一方面,code>ui.router
非常感谢您的评论@Phil我研究了你的建议,发现了一个非常简单的例子:-问题是它没有保留状态/范围。@Farsen正如Phil所评论的,ngRoute似乎不支持子状态。在我的应用程序中,我使用它提供更多功能,包括子状态。您可以查看此线程以了解有关差异的更多信息。