2015-12-21 68 views
5

我正在使用angularjs 1.4,并且在我的一个角度控制器中我必须使用jQuery。但是当我试图将它作为依赖项传递时,它不起作用。将jQuery依赖关系传递给角度js控制器

我尝试下面的代码,但没有成功

(function() { 
    'use strict'; 

    var app= angular.module('app'); 

    app.controller('getUserInfo', ['jQuery', 
     function($) { 
     // some logic 
    }]); 
})(); 

我也试过下面的代码,但没有成功

(function() { 
    'use strict'; 

    var app= angular.module('app'); 

    app.controller('getUserInfo', ['$', 
     function($) { 
     // some logic 
    }]); 
})(); 

可以请一些指导什么,我做错了。

回答

8

你可以在你的应用程序模块&中创建自己的常量,然后你可以在需要的地方注入这个依赖项。

app.constant('jQuery', window.jQuery) 

我选择了常量,因为它可用于在角度的配置阶段内注入它的依赖关系。

(function() { 
    'use strict'; 

    var app= angular.module('app'); 

    app.controller('getUserInfo', ['jQuery', 
     function($) { 
     // $ will provide you all jQuery method available in it. 
     //but don't do DOM manipulation from controller. 
     //controller is not the correct place to play with DOM. 
    }]); 
})(); 

但是,当你想在控制器中注入jQuery的依赖,我会说NO。不要这样做。基本上你不应该从控制器做任何DOM操作。你可以通过指令做到这一点,该指令可以更好地使用DOM。

4

如果您在angular.js之前加载jQuery.js,AngularJS将使其可用作angular.element并添加Angular特定方法。

app.controller('getUserInfo', function() { 
    var $ = angular.element; 
    // some logic 
}]); 

从文档:

如果jQuery是可用的,angular.element是jQuery函数的别名。如果jQuery不可用,angular.element委托给Angular的jQuery内置子集,名为“jQuery lite”或jqLit​​e。

欲了解更多信息,请参阅AngularJS angular.element API Reference

相关问题