angular-require icon indicating copy to clipboard operation
angular-require copied to clipboard

$digest already in progress

Open Num142857 opened this issue 8 years ago • 3 comments

加载过后的页面再加载报错$digest already in progress

Num142857 avatar Jan 27 '16 07:01 Num142857

@incomparable9527 能否给个demo?

我在公司项目中已经使用超过一年时间了, 但是没遇到这样的情况

wyntau avatar Jan 27 '16 09:01 wyntau

@Treri 我应该用的方法不对,但是公司项目因为历史原因,实在没有办法.

我用require定义了一个app模块

define(["angular", "uiRouter", "ngRequire"], function() {
  var app = angular.module('app', ['ngRequire', 'ui.router']);
  app.config(function($stateProvider, $urlRouterProvider, $requireProvider) {
    $urlRouterProvider.otherwise('/create');
    $stateProvider
      .state('create', { //创建
        url: '/create',
        templateUrl: '/assets/templates/promotion/create.html',
        controller: 'createController',
        resolve: {
          deps: $requireProvider.requireJS([
            '/assets/javascripts/app/promotion/createController.js'
          ])
        }
      })
      .state("voucherManage", { //管理
        url: "/voucherManage",
        templateUrl: "/assets/templates/promotion/voucherManage.html",
        controller: "voucherManageController",
        resolve: {
          deps: $requireProvider.requireJS([
            '/assets/javascripts/app/promotion/voucherManageController.js'
          ])
        }
      })
  });
  return app
})

下面是控制器的代码,所有加载进来的控制器都长这个样子 依赖的app,就是上面的代码

define(["app"], function(app) {
  app.controller("createController", ["$scope", function($scope) {}])
})

下面是在页面里启动的代码

require([
    "app",
    "directives",
    "services"
  ], function() {
    angular.bootstrap(document, ["app"])
  })

用 ui-sref跳转到原来加载过的页面,正常运行 但是用浏览器的后退,回到之前加载过的页面, 就会出现$digest already in progress, 之前也用过你的代码用在其它项目中, 因为app是全局变量,所以没有出现过这个问题,一直都用得非常好. 但是现在的项目 因为历史原因必须要这样加载代码, 要是能知道问题出在哪里,那就再好不过了. 谢谢.

Num142857 avatar Jan 28 '16 02:01 Num142857

@incomparable9527 我和你的使用方法一样, 没有问题。 我也没使用过全局变量

wyntau avatar Jan 30 '16 04:01 wyntau