Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有相同控制器实例的角度routeprovider_Javascript_Angularjs - Fatal编程技术网

Javascript 具有相同控制器实例的角度routeprovider

Javascript 具有相同控制器实例的角度routeprovider,javascript,angularjs,Javascript,Angularjs,我有一个角度应用程序,我使用routeprovider指向不同的模板。列表模板和地图模板。这些模板具有与其关联的控制器。 问题是,当我更改路由时,当前控制器实例被销毁,并且当前模板的新控制器实例被重新初始化。这是一个问题,因为地图模板会启动openlayers地图,而openlayers地图在浏览器中非常繁忙 路由提供者: app.config(['$routeProvider', function ($routeProvider) { $routeProvider.

我有一个角度应用程序,我使用routeprovider指向不同的模板。列表模板和地图模板。这些模板具有与其关联的控制器。 问题是,当我更改路由时,当前控制器实例被销毁,并且当前模板的新控制器实例被重新初始化。这是一个问题,因为地图模板会启动openlayers地图,而openlayers地图在浏览器中非常繁忙

路由提供者:

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似乎不支持子状态。在我的应用程序中,我使用它提供更多功能,包括子状态。您可以查看此线程以了解有关差异的更多信息。