web-dev-qa-db-ja.com

AngularJSディレクティブ内でJqueryを使用するのは良い考えですか、悪い考えですか?

以下に、ディレクティブのコードを示します。

私の質問は: "ディレクティブでjqueryを使用できますか?それは良い考えですか?そうでない場合はなぜですか?"

outsource.directive('dedicated', function(){

        return {
           restrict: 'E',
           link: function(scope, element, attribute){

                 $("#klik").click(function(){
                    alert('works');
                 });

           },

           replace: true,
           templateUrl: 'src/app/components/views/dedicated-prices.html'
        };
    });

P.sこのコードは機能します。

11
Vesko Vujovic

Angular自体には、jqliteと呼ばれる軽量バージョンがあるため、jqueryを使用しないでください。

[〜#〜] jqlite [〜#〜] に関するその他のドキュメント

したがって、ディレクティブは次のようになります。

outsource.directive('dedicated', function(){

    return {
       restrict: 'E',
       link: function(scope, element, attribute){

             var elem = angular.element(document.querySelector('#klik'))
             angular.element(elem).triggerHandler('click');

       },

       replace: true,
       templateUrl: 'src/app/components/views/dedicated-prices.html'
    };
});
6
V31

簡単な答え:[〜#〜] yes [〜#〜](HTMLページのAngular.jsの上にあるjquery.jsを参照してください。jqLit​​eは置き換えられますjQueryによる)

DOM操作にjQueryを使用することになり、このトピックについては多くの議論が行われています(最新のブラウザーで使用するかどうかは関係ありません)。

最近人気のある投稿の1つ: http://lea.verou.me/2015/04/jquery-considered-harmful/

すべてにもかかわらず、jQueryは依然として非常に人気があり、非常に使用されているDOMライブラリです。また、多くの最新のUIフレームワークとシームレスに連携します。

2
Navaneeth

興味深い質問です。コードベースのいくつかのディレクティブ/コントローラーに要素を選択したjqueryがあります。

私はいつもそれを使って汚く感じ、本当に必要なときにだけそれをします、残念ながらそれはほとんど常に時限爆弾であり、数ヶ月後に自分を呪い、より角度のある方法を使用するようにリファクタリングすることになります。

最後にもう一度見て、あなたがやろうとしていることを行うネイティブangular方法があるかどうかを確認してください、あなたはそれを後悔することはありません!

1
Stu