2015-12-21 7 views
5

Sto usando angularjs 1.4, e in uno dei miei regolatore angolare devo usare jQuery. ma quando sto cercando di passarlo come dipendenza, non funziona.Passo jQuery dipendenza angolare del controller js

ho cercato qui di seguito il codice, ma senza successo

(function() { 
    'use strict'; 

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

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

Ho provato anche sotto il codice, ma senza successo

(function() { 
    'use strict'; 

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

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

mai alcuni si prega di guida quello che sto facendo male.

risposta

8

è possibile creare il proprio costante all'interno del vostro modulo di applicazione & allora si può iniettare che la dipendenza dove vuoi.

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

I scelti costante, perché sarebbe disponibile per iniettare la dipendenza all'interno fase di configurazione angolare.

(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. 
    }]); 
})(); 

Ma come si voleva iniettare la dipendenza di jQuery dentro un controllore, direi di no. Non farlo. Fondamentalmente non si dovrebbe fare alcuna manipolazione DOM dal controller. Puoi farlo dalla direttiva, che ha la capacità di giocare in modo migliore con DOM.

4

Se si carica jQuery.js prima di angular.js, AngularJS lo renderà disponibile come angular.element e aggiungerà anche i metodi specifici Angular.

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

dalla documentazione:

Se jQuery è disponibile, angular.element è un alias per la funzione di jQuery. Se jQuery non è disponibile, angular.element delega al sottoinsieme integrato di jQuery di Angular, chiamato "jQuery lite" o jqLite.

Per ulteriori informazioni vedere AngularJS angular.element API Reference.