使用angular.injector和ngAnimate

时间:2014-08-25 11:15:43

标签: angularjs ng-animate angularjs-injector

我已经包含了" ngAnimate"作为我的ngApp的依赖。

现在在jQuery文件中,我试图使用:

来访问它
angular.injector(['ng', 'angular-sm']).invoke(['$compile', '$timeout' ,function ($compile, $timeout) {

但这给了我一个错误

Error: $injector:unpr
Unknown Provider
Unknown provider: $rootElementProvider <- $rootElement <- $animate <- $compile

然后我将其更改为:

angular.injector(['ng','ngAnimate', 'angular-sm']).invoke(['$compile', '$timeout' ,function ($compile, $timeout) {

angular.injector(['ng','ngAnimate', 'angular-sm']).invoke(['$animate','$compile', '$timeout' ,function ($animate,$compile, $timeout) {

这些DIDN&T也可以工作。

然后我尝试了:

var app_element = document.querySelector('[ng-app=angular-sm]');
            angular.element(app_element).injector().invoke(['$compile', '$timeout' ,function($compile,$timeout) {

即我使用了定义的ngApp的注入器并且它起作用了。为什么这样?

1 个答案:

答案 0 :(得分:2)

Angular应用程序中只有一个$injector,您可以使用

获取它
angular.injector('rootModule')

angular.element(document).injector()

在您的情况下,它不是根模块,因此您有错误。