2015-12-21 119 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