Angular $ httpProvider拦截器已停止为' ng-include'添加" UI Grid"到应用程序

时间:2016-07-05 06:10:34

标签: javascript angularjs angular-ui-grid ng-grid

我正在尝试将Angular UI Grid添加到我的应用程序中,然后介绍教程Tutorial: 101 Intro to UI-Grid并面临以下问题。

首先,网格工作,我可以在控制器中创建它并绑定到视图,但是 一旦我将它添加到项目中(只是作为一个模块添加,而不在任何地方实际使用它),之前工作的拦截器不再被触发,更具体地说,它需要用 ng-include (参见下面的一些代码摘录)。

编辑:请注意 ng-include 有效,它只是不通过拦截器,但是没有。但

  • Angular 1.4.8
  • UI Grid 3.2.1
  • jQuery 2.2.0

我尝试了什么:

  1. 使用其他Angular版本
  2. 尝试使用工厂的init拦截器,
  3. 更改了init数组中模块的顺序,
  4. 尝试了其他jQuery版本。
  5. 有没有人遇到过这样的问题,或许还有其他模块?

    HTML:

    <body>
        <div ng-app="app">
            <div ng-controller="app.views.layout as vm">
                <div ng-include="'/App/Main/views/layout/header.cshtml'"></div>
                <div class="container">
                    <div class="angular-animation-container row">
                        <div ui-view class="shuffle-animation col-xs-12"></div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    

    Angular应用程序初始化:

    var app = angular.module('app', [
        'ngAnimate',
        'ngSanitize',
    
        'ui.router',
        'ui.bootstrap',
        'ui.jq',
    
        'ngTouch'
        'ui.grid'
    
        'abp',
    
    ]);
    

    拦截器注册:

    var abpModule = angular.module('abp', []);
    
    abpModule.config([
        '$httpProvider', function ($httpProvider) {
            $httpProvider.interceptors.push(['$q', function ($q) {
    
                return {
    
                    'request': function (config) {
                        if (endsWith(config.url, '.cshtml')) {
                            config.url = abp.appPath + 'AbpAppView/Load?viewUrl=' + config.url + '&_t=' + abp.pageLoadTime.getTime();
                        }
    
                        return config;
                    },
    
                    'response': function (response) {
                        if (!response.config || !response.config.abp || !response.data) {
                            return response;
                        }
    
                        var defer = $q.defer();
    
                        abp.ng.http.handleResponse(response, defer);
    
                        return defer.promise;
                    },
    
                    'responseError': function (ngError) {
                        var error = {
                            message: ngError.data || abp.ng.http.defaultError.message,
                            details: ngError.statusText || abp.ng.http.defaultError.details,
                            responseError: true
                        }
    
                        abp.ng.http.showError(error);
    
                        abp.ng.http.logError(error);
    
                        return $q.reject(ngError);
                    }
    
                };
            }]);
        }
    ]);
    

1 个答案:

答案 0 :(得分:0)

我从头开始设置它现在有效。看起来我在某个地方错过了一些小配置错字。显然,ui-grid也不会干扰角度的http拦截,所以结论是它是虚假警报。