3

Typescript 1.7、AngularJS 1.5.7、oclazyload 1.0.9、ui-grid 3.2.5、ui-router 0.3.1、requirejs 2.2.0 を使用しています。

まず、Angular 1.4.3 から 1.5.7 にアップグレードするまで、すべてが正常に機能していました。

私のコードでは、require config から次のようにソースを取り込みます。

shim: {
    'angular': {
        exports: 'angular',
        deps: ['Scripts/RequireJS/V.2.2.0/domReady!']
    },
    'ngSanitize': {
        deps: ['angular']
    },
    'ngAnimate': {
        deps: ['angular']
    },
    'ngTouch': {
        deps: ['angular']
    },
    'uiRouter': {
        deps: ['angular', 'ocLazyLoad']
    },
    'uiBootstrapTpls': {
        deps: ['angular']
    },
    'ocLazyLoad': {
        deps: ['angular', 'ngAnimate']
    },

必要な呼び出しが完了したら、Angular を構成してから手動でブートストラップを呼び出します。

ユーザーはログイン ページにアクセスしてログインし、ホームページに移動します。ホームページには ui-grid があるので、次のように状態が変化すると遅延ロード ( oc lazy loader ) します。

 $ocLazyLoad.load('uiGrid');

uiGrid は、次のように angular モジュールの config 呼び出しで構成されたことに注意してください。

$ocLazyLoadProvider.config({
                events: true,
                jsLoader: requirejs,
                serie: true,
                modules: [

                    {
                        name: 'uiGrid',
                        files: ['Scripts/AngularUIGrid/V.3.2.5/ui-grid.min']

                    }

これで Angular 1.5.7 を使用すると問題なく動作しますが、ページをリロードすると次のようになります。

TypeError: $$animateJs is not a function\n    
at prepareAnimation (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:2152:14)\n    
at initDriverFn (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:2136:16)\n    
at invokeFirstDriver (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:3234:24)\n    
at Array.triggerAnimationStart (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:3080:33)\n    
at nextTick (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:423:15)\n    
at scheduler (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:393:5)\n    
at Array.<anonymous> (http://myServer/Scripts/Angular/V.1.5.7/angular-animate.js?bust=2016_6_12_12_24:3102:9)\n    
at Scope.$digest (http://myServer/Scripts/Angular/V.1.5.7/angular.js?bust=2016_6_12_12_24:17338:55)\n    
at Scope.$apply (http://myServer/Scripts/Angular/V.1.5.7/angular.js?bust=2016_6_12_12_24:17553:24)\n    
at done (http://myServer/Scripts/Angular/V.1.5.7/angular.js?bust=2016_6_12_12_24:11698:47)

これは 1.4.3 Angular では発生しませんでした。

これが発生するのは、angular-animate.js で $$animateJs の DI が定義されていないためです...したがって、表示されるエラー メッセージが表示されます。

var $$AnimateJsDriverProvider = ['$$animationProvider',     function($$animationProvider) {
  $$animationProvider.drivers.push('$$animateJsDriver');
  this.$get = ['$$animateJs', '$$AnimateRunner', function ($$animateJs,     $$AnimateRunner) {

oclazyload が問題なのですか。少し調べてみたところ、ブートストラップとモジュールを装飾する方法が貢献できるかどうかわかりませんでした。

助けてくれてありがとう。

4

1 に答える 1

-1

ui.grid は ngAnimate に依存しているため、ui.grid をロードする前にロードする必要があります。

resolve: helper.resolveFor('ngAnimate','ui.grid')

お役に立てれば。

于 2016-07-15T06:41:43.860 に答える