2014-11-26 4 views
2

У меня возникает ошибка при использовании ngAnimate и ui-view. Onload или щелкнуть любое меню навигации; angular-animate.js генерирует ошибку «объект не является функцией».Объект ngAnimate не установлен на функцию

Здесь главное javacsript приложение:

(function() { 
'use strict'; 
var app = angular.module("pie", ['ui.router', 'uiGmapgoogle-maps', 'ui.bootstrap', 'ngAnimate']); 

app.config(["$stateProvider", "$locationProvider", "$urlRouterProvider", 
function ($stateProvider, $locationProvider, $urlRouterProvider) { 

    $locationProvider.html5Mode({ enabled: true, requireBase: false }); 

    $urlRouterProvider.otherwise('/Welcome'); 
    $stateProvider 
     .state("Welcome", { 
      url: "/Welcome", 
      templateUrl: "../Scripts/Home/WelcomeView.html", 
      controller: "WelcomeController" 
     }) 
     .state("About", { 
      url: "/About", 
      templateUrl: "../Scripts/Home/AboutView.html", 
      controller: "AboutController" 
     }) 
     .state("Contact", { 
      url: "/Contact", 
      templateUrl: "../Scripts/Home/ContactView.html", 
      controller: "ContactController" 
     }) 
     .state("Login", { 
      url: "/Account/Login" 
     }) 
     .state("Register", { 
      url: "/Account/Register" 
     }) 
     .state("ForgotPassword", { 
      url: "/Account/ForgotPassword" 
     }); 
}]); 

//app.animation('.view-animation', function() { 
// return { 
//  enter: function (element, done) { 
//   element.css({ 
//    opacity: 0.5, 
//    position: "relative", 
//    top: "10px", 
//    left: "20px" 
//   }).animate({ 
//    top: 0, 
//    left: 0, 
//    opacity: 1 
//   }, 1000, done); 
//  } 
// }; 
//}); 

app.config(['$httpProvider', function ($httpProvider) { 
    //Http Intercpetor to check auth failures for xhr requests 
    $httpProvider.interceptors.push('AuthHttpResponseInterceptor'); 
}]); 

// Google map 
app.config(['uiGmapGoogleMapApiProvider', function (uiGmapGoogleMapApiProvider) { 
    uiGmapGoogleMapApiProvider.configure({ 
     // key: 'your api key', 
     v: '3.17', 
     libraries: 'weather,geometry,visualization' 
    }); 
} 
]); 

}()); 

Удивительно анимация, кажется, работает, но я бы предпочел решить ошибку:

Это где ошибка генерируется в угловом anumate.js :

function fireDoneCallbackAsync() { 
              fireDOMCallback('close'); 
              if (doneCallback) { 
               $$asyncCallback(function() { 
                doneCallback(); 
               }); 
              } 
             } 

Я использую vs2013, как IDE, все JavaScripts файлы и библиотеки вставлены в нижней части страницы; Я попытался инъекционным через пачку или очередной сценарий, как шоу, но без каких-либо различий:

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/bootstrap") 
@Scripts.Render("~/bundles/angularjs") 
@*@Scripts.Render("~/bundles/angularAnimate")*@ 
<script src="~/Scripts/angular-animate.js"></script> 
@Scripts.Render("~/bundle/app") 

Любой помощь будет оценен. Спасибо

EDITED Даже если я прокомментирую вызов app.animation, ошибка остается (см. Код выше). Просто подающее ngAnimate будет генерировать ошибку

var app = angular.module("pie", ['ui.router', 'uiGmapgoogle-maps', 'ui.bootstrap', 'ngAnimate']); 

Может ли IIFE быть причиной?

+0

Кажется, что функция «done» является причиной вашей проблемы. Ожидаемый ввод - это функция (element, className, from, to, done), где от и до требуется, поэтому он думает, что это ваш, один должен быть объектом, а другой нет? См. Https://docs.angularjs.org/api/ngAnimate/service/$animate – SoluableNonagon

ответ

11

Что-то действительно важно помнить при использовании ngAnimate в том, что версия ngAnimate должна быть такой же, как у угловой версии, которую вы используете.

То есть, если вы используете v 1.3.4 углового значения, вы должны использовать v 1.3.4 углового анимата.

Так как вставка только библиотеки дает вам ошибку, я ожидаю, что ваши версии не синхронизируются.

+1

Спасибо. Вот и все. Угловое ядро, установленное от Nugets, было 1.3.2 и ngAnimate 1.2.27. Я провел довольно много исследований и никогда не сталкивался с этим требованием. – bouchepat

+0

Ах. Это тоже меня. Было бы неплохо, если бы появилось какое-то предупреждающее сообщение, сообщающее вам, что вы используете версии, которые не синхронизированы. – Don

+1

@ Don, согласился - я смог быстро ответить на этот вопрос, потому что это случилось со мной всего несколько раз! Это сделало бы большой запрос тяги для [ngHint] (https://github.com/angular/angular-hint) –

Смежные вопросы