2015-01-13 3 views
0

Есть ли способ повторно инициализировать контроллер, который в настоящее время активен?Angularjs Reinitializing active controller

Это поможет мне с переходом со страницы на страницу без добавления дополнительного дополнительного обходного кода.

Например:

<div ng-controller='Blah as ex'> 
    {{ex.name}} 
</div> 

и в функции инициализации контроллера Мля, ​​имя будет извлеченной из службы:

this.name = someService.name; 

Так что для приведенного выше примера, я хотел бы иметь кнопку, которая будет повторно инициализировать мой контроллер Blah.

Редактировать: Это всего лишь базовый пример.

Я использую «состояние» браузера, чтобы восстановить данные «назад» и «вперед» в моих контроллерах.

Есть несколько случаев, так что я пытаюсь упростить процесс (который в настоящее время работает, но не как «довольно»)

+0

Почему бы вам просто не называть кнопку снова? Это обновит значение $ scope. Я бы предположил, что перезагрузка всего вашего контроллера намного медленнее, чем перезагрузка отдельных вещей, которые вы хотите обновить. –

+0

Это очень простой пример. Мое приложение переходит с одной страницы на другую, и мне нужно перезагрузить его контроллер. – PenguinSource

+0

Чтобы уточнить, вы маршрутизируетесь в разные виды и хотите, чтобы контроллер для каждого представления обновлялся каждый раз, когда вы направляете его на связанный с ним просмотр? –

ответ

0

Будет что-то вроде этого является возможным решением? Использование route.reload для перезагрузки вашей страницы?

myapp.Controller('SampleController', function($location, $route) { 

    $scope.navTo = function(url) { 
    if ($location.path() === url) { 
     $route.reload(); 
    } else { 
     $location.path(url); 
    } 
    } 

}); 
+0

Это действительно сработает, но я бы подумал о двух основных проблемах: сначала он перезагрузит все заголовки html в целом, поэтому не только контроллер. Это сделало бы его гораздо более неэффективным. Вторая проблема заключается в том, что путь SPA не может перезагружаться в нужном месте; конечно, это побочный вопрос. – PenguinSource

+0

Я имею в виду, что единственное, что я могу придумать, это просто добавить в свой контроллер функцию инициализации, которая сбрасывает все значения обратно в состояние по умолчанию. –

+0

Решил проблему с другим решением. Спасибо за помощь. – PenguinSource