【问题标题】:AngularJS: Controller loads only after page refreshAngularJS:控制器仅在页面刷新后加载
【发布时间】:2017-12-30 23:40:06
【问题描述】:

我正在使用 AngularJS 和 ASP.NET MVC 来创建一个使用 Angular 控制器作为前端的应用程序。 当我在我的开发系统上运行应用程序时,它工作正常。当我在本地 IIS 上部署它时,它工作正常。但是,当我将它部署到生产服务器 IIS 时,角度控制器不会加载,它需要刷新页面才能使其工作。

我看过类似的问题,例如: Angular app only loads on page refresh

我也没有安装任何其他扩展程序或插件来影响其他类似问题中建议的行为。

我已将所有 JS 打包移动,但这也无济于事。 JS 的顺序似乎也是正确的,因为它在开发系统和本地 IIS 上运行良好。

我不知道如何处理这个问题。

这是控制台中错误的屏幕截图:

这是代码:

对于 HomeController,

app.controller('homeController', function ($scope, $uibModal, HomeService, RequestService) {
    $scope.refreshOriginatorForms = function (searchCriteria) {
        HomeService.getOriginatorRequestForms(searchCriteria).then(function (response) {
           ....
        });
    }
    var originatorSearchCriteria = {
        Pager: {
            ItemsPerPage: 10,
            CurrentPage: 1
        }
    };
    $scope.OriginatorFormsSearchCriteria = originatorSearchCriteria;
    $scope.initialize = function () {
        $scope.refreshOriginatorForms($scope.OriginatorFormsSearchCriteria);
    };
}

$scope.initialize 方法在视图中调用 ng-init="initialize()"

【问题讨论】:

  • 您能否在您的应用首次启动但无法正常运行时分享您浏览器控制台的屏幕截图?
  • @Sameer:你能分享你的应用程序和控制器代码吗?
  • @ArashKhajelou 是正确的,它第一次不起作用,并且使用 Angular 的应用程序中的每个页面都会发生这种情况。但是,在刷新时,该特定页面可以正常工作。
  • @VindhyachalKumar 代码在我的本地开发系统上运行良好。但是,我不能共享代码。
  • 我认为您在 Angular 的同步请求中存在一些错误,例如您将获取用户数据,但您在获取之前使用它,这实际上是它在本地工作的原因服务器正确,在本地服务器上服务器的响应速度更快,控制器不会遇到错误,如果您分享您的代码,我可以为您提供更多和准确的帮助

标签: javascript angularjs asp.net-mvc iis


【解决方案1】:

我已经把所有的 JS 都打包了

如果您要最小化角度控制器,那么您应该像这样编写我们的控制器,以使最小化器不会重命名重要的角度关键字,例如 $scope

app.controller('homeController',['$scope','$uibModal','HomeService','RequestService', function ($scope, $uibModal, HomeService, RequestService) {
$scope.refreshOriginatorForms = function (searchCriteria) {
    HomeService.getOriginatorRequestForms(searchCriteria).then(function (response) {
       ....
    });
}
var originatorSearchCriteria = {
    Pager: {
        ItemsPerPage: 10,
        CurrentPage: 1
    }
};
$scope.OriginatorFormsSearchCriteria = originatorSearchCriteria;
$scope.initialize = function () {
    $scope.refreshOriginatorForms($scope.OriginatorFormsSearchCriteria);
};
}])

【讨论】:

  • 我实际上尝试了所有这些......但没有任何效果,最后,我正在与团队讨论问题,域管理员,他建议在域上启用 CDN。最终使一切正常?现在我不知道这一切是怎么回事,但它现在正在工作......
【解决方案2】:

我们终于解决了。我们的网络工程师建议在 DNS 上启用 CDN,并且成功了。 一直在看代码,问题是别的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多