2015-06-11 7 views
3

Я пытаюсь настроить контроллер, который перенаправляет пользователя на определенную домашнюю страницу при переходе на определенный URL-адрес. Это разные пользователи могут иметь собственную целевую страницу.Угловой контроллер загружается только в первый раз в IE

У меня есть состояние

.state('database.home', { 
    url: '/home', 
    templateUrl: "app/Database/Home/home.html", 
    controller: "DatabaseHomeController" 
}) 

и контроллер

(function (ng, app) { 

    "use strict"; 

    app.controller(
     "DatabaseHomeController", 
     ["$rootScope", "$scope", "$state", "$stateParams", "sessionService", function ($rootScope, $scope, $state, $stateParams, sessionService) { 

      console.log("Database home controller running"); 

      $stateParams.systemName = sessionService.auth.DefaultSystem; 
      $stateParams.objectName = sessionService.auth.Homepage; 

      if ($stateParams.objectName) { 
       $state.transitionTo("database.object", $stateParams); 
      } else { 
       $state.transitionTo("login"); 
      } 
     }]); 
}) 
(angular, WebAppName); 

Это работает один раз в Internet Explorer, но по требованию в Chrome/Firefox.

Эта строка регистрации отображается только при первом щелчке по домашней ссылке или введите URL-адрес в IE. Каждый последующий раз, когда я вижу

0x800a139e - JavaScript runtime error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! 

в angular.js

Edit:

Слишком прояснится, как два человека сейчас попросили. $ StateParams не является причиной проблемы.

if (sessionService.auth.Homepage !== "") { 
    $state.transitionTo("database.object", { objectName: sessionService.auth.Homepage, systemName: sessionService.auth.DefaultSystem }); 
} else { 
    $state.transitionTo("login"); 
} 

Ведет себя точно так же, что он работает только один раз в IE, но каждый раз в Firefox и Chrome.

Edit 2:

Изменение $ state.transistionTo за $ state.go нет никакой разницы infinate петля на последующих использований остается в IE.

+0

Это, вероятно, что-то делать с присвоением переменных в '$ stateParams' – devqon

+0

Если бы это было так, я бы до сих пор ожидают console.log огонь , – Saurbaum

+0

Возможно, эта ссылка будет полезна http://stackoverflow.com/questions/13853844/angular-js-ie-error-10-digest-iterations-reached-aborting – devqon

ответ

0

Общепринятая трюка с использованием приложения под IE заключается в том, что вы не должны ставить console.log.

Так просто закомментируйте эту строку:

console.log("Database home controller running"); 
+0

Это звучит не так, и если у вас есть источник, чтобы заявить об этом, я бы с удовольствием прочитал его. В любом случае я проверил удаление всех консольных журналов, и это не имеет никакого значения. – Saurbaum

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