2015-12-21 11 views
5

Używam angularjs 1.4, a w jednym z moich kontrolerów kątowych muszę używać jQuery. ale kiedy próbuję przekazać to jako zależność, to nie działa.Przekaż zależność jQuery od kontrolera kątowego js

Próbowałem poniżej kod, ale bez powodzenia

(function() { 
    'use strict'; 

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

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

Próbowałem też poniżej kod, ale bez powodzenia

(function() { 
    'use strict'; 

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

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

Można niektóre proszę kierować, co robię źle.

Odpowiedz

8

Możesz utworzyć własną stałą w module aplikacji &, a następnie możesz wprowadzić tę zależność tam, gdzie chcesz.

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

Wybrałem stałą, ponieważ byłoby dostępne wstrzyknięcie jej zależności wewnątrz fazy konfiguracji kątowej.

Ale jeśli chcesz wstrzyknąć zależność jQuery wewnątrz kontrolera, powiedziałbym NIE. Nie rób tego. Zasadniczo nie powinieneś wykonywać żadnych manipulacji DOM z kontrolera. Możesz to zrobić z dyrektywy, która ma lepszą możliwość gry z DOM.

4

Jeśli plik jQuery.js zostanie załadowany przed plikiem angular.js, AngularJS udostępni go jako angular.element i doda również metody specyficzne dla Angular.

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

Od docs:

Jeśli jQuery jest dostępny, angular.element jest aliasem dla funkcji jQuery. Jeśli jQuery nie jest dostępny, angular.element deleguje do wbudowanego podzbioru jQuery Angular, zwanego "jQuery lite" lub jqLite.

Aby uzyskać więcej informacji, patrz AngularJS angular.element API Reference.