2015-12-21 12 views
5

私はangularjs 1.4を使用しています。角度コントローラの1つでは、jQueryを使用する必要があります。しかし、私がそれを依存として渡そうとしているとき、それは機能していません。角度jsコントローラにjQuery依存関係を渡す

私はまた、コードの下にしようとしたが、何の成功

(function() { 
    'use strict'; 

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

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

は、いくつかの私が間違っているの何案内しないてくださいすることができます。コードの下にしようとしたが、無成功

(function() { 
    'use strict'; 

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

    app.controller('getUserInfo', ['jQuery', 
     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は、jQueryの組み込みサブセット「jQuery lite」またはjqLit​​eに委譲します。

詳細についてはAngularJS angular.element API Referenceを参照してください。

関連する問題