Я пытаюсь создать пользовательские переключатели, и я обнаружил, что мои контроллеры выполняются дважды для каждого экземпляра. Я не указывал контроллер просмотра дважды. Это, кажется, общая проблема. Я использую угловую-маршрутизацию, и соответствующий фрагмент кода для этого заключается в следующем:AngularJS: Маршрутизация запускает контроллер дважды
$routeProvider.when('/:action', {
templateUrl: function (params) {
if (!params.action) params.action = 'Index';
return '_' + params['action'];
}
});
Я использую ng-controller
в шаблоне. Событие routeChangeSuccessful (или то, что он называется) срабатывает, и он компилирует все нормально, но, похоже, отслеживает некоторую функцию пост-ссылки, которая также компилирует все; таким образом, двойные экземпляры.
Что я делаю неправильно? Как я могу избежать дублирования вызовов?
Update
Я обнаружил, что это перекомпилировать исходный вид, что бы это ни было, при маршрутизации через AngularJS. Я могу обойти это, добавив секретную пустую страницу, которая всегда попадает в первую очередь (я разрабатываю проект .NET MVC, поэтому я могу контролировать это с помощью маршрутизации MVC), но это кажется довольно глупым.
Почему ngRoute перекомпилирует начальное представление каждый раз? Есть ли элегантный обход?
По какой-либо причине вы не используете параметр контроллера в инструкции «когда»? обычно вы не используете инструкцию ng-controller в шаблоне с маршрутизацией. –
Шаблоны динамически выбираются, и я не хочу, чтобы один контроллер с конкретными потребностями каждого шаблона. – ricksmt