2015-05-21 2 views
1

Я сделал угловое приложение с несколькими анкерами. Каждый якорь загружает Угловой контроллер с его шаблоном, что нагрузка определяются по $ 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' 
    }); 
}]); 

Видимо, нет ничего странного, но я видел, что каждый раз, когда я нажимаю на якоре углового перезагружает контроллер, даже если он был загружен раньше.
Итак, вот мой вопрос: есть ли способ с $ routeProvider или какой-либо другой функцией Angular, чтобы проверить, запущен ли контроллер, чтобы предотвратить его перезагрузку?

ответ

1

Каждый раз, когда маршрут согласован, экземпляр контроллера запускается - не имеет значения, имеет ли другой маршрут тот же самый контроллер. Вы можете определенно сделать некоторые шаткие, чтобы предотвратить тот же контроллер от работы, но в вашем случае это совершенно не нужно, так как вы могли бы просто один маршрут и необязательный параметр application:

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

А затем в контроллере вы мог бы сделать:

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

Благодарим за ответ, но я бы хотел (если возможно) использовать более одного контроллера. Я хотел бы, чтобы мое приложение было максимально модульным. – disa

+0

Насколько это модульное дублирование маршрутов? –

+0

Хорошо, но в этом случае мне нужно сделать только один контроллер со всех маршрутов. Вместо этого я хочу сделать один контроллер по маршруту – disa

Смежные вопросы