$$animateJs не работает при использовании oclazyload, uigrid и nganimate

Я использую 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.

В моем коде я извлекаю исходный код из требуемой конфигурации:

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']
    },

Как только вызовы require завершатся, я настрою angular, а затем вызову bootstrap вручную.

пользователь заходит на страницу входа, входит в систему, затем переходит на домашнюю страницу. На домашней странице есть сетка пользовательского интерфейса, поэтому мы лениво загружаем ( oc lazy loader ) изменение состояния следующим образом:

 $ocLazyLoad.load('uiGrid');

обратите внимание, что uiGrid был настроен в вызове конфигурации углового модуля следующим образом:

$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 DI $$animateJs не определен... поэтому отображается сообщение об ошибке

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

Является ли проблема с oclazyload, я немного посмотрел на нее и не знал, может ли способ, которым он украшает загрузку и модуль, мог способствовать?

Заранее благодарю за любую помощь.


person Brandon    schedule 12.07.2016    source источник
comment
Привет Брэндон. Удалось решить эту проблему? У меня тоже такая же проблема, за исключением того, что я не лениво загружаю angular-animate.   -  person PenguinBlues    schedule 24.09.2017
comment
Извините, в прошлом году сменил работу и в последнее время здесь не был. Я не думаю, что решил это, но я не занимался Angular с июня прошлого года...   -  person Brandon    schedule 23.01.2018


Ответы (1)


ui.grid зависит от ngAnimate, поэтому вам нужно загрузить его перед загрузкой ui.grid.

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

Надеюсь это поможет.

person Saket Nalegaonkar    schedule 15.07.2016
comment
На самом деле я уже загружаю ngAnimate в конфигурацию requirejs, uiGrid отложенно загружается позже, когда человек аутентифицируется. В этом сценарии все в порядке, но как только я вхожу в систему и перезагружаю страницу, появляется сообщение об ошибке, хотя ngAnimate снова загружается сначала с помощью requirejs до загрузки uiGrid. - person Brandon; 18.07.2016
comment
ссылка Объяснение довольно ясное. - person Saket Nalegaonkar; 19.07.2016
comment
Эта ссылка, кажется, действительно не помогает. ОП даже прокомментировал, что это не сработало, как кажется, но что они просто добавят uigrid без ленивой загрузки и пометят ответ как правильный. В моем случае я сделал ocLazyLoad зависимым от ngAnimate, поэтому я до сих пор не понимаю, почему это происходит, и я действительно не хочу копаться в кишках angular и ui-grid в данный момент. - person Brandon; 22.07.2016