角度控制器仅在IE中第一次加载

时间:2015-06-11 08:57:58

标签: angularjs

我尝试设置一个控制器,当用户导航到特定网址时,该控制器会将用户重定向到已定义的主页。这是如此不同的用户都可以拥有自己的目标网页。

我有一个州

(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);

和控制器

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

这在Internet Explorer中可以使用一次,但在Chrome / Firefox中可以按需使用。

该行记录仅在我第一次点击主页链接或在IE中输入网址时显示。随后我会看到

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

修改

现在已经有两个人问过了。 $ stateParams不是问题的原因。

DEBUG

行为完全一样,因为它只在IE上运行一次,但每次都在Firefox和Chrome中运行。

编辑2:

为$ state.go更改$ state.transistionTo对后续用法中的infinate循环没有任何影响。

1 个答案:

答案 0 :(得分:0)

在IE下运行aplication的一个常见技巧是你不能放入console.log。

所以请注意这一行:

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