anglejsディレクティブリンク関数の要素クラスを変更します

user3772343

Angularjsのカスタムディレクティブを使用して、単純なドラッグアンドドロップインターフェイスを設定しようとしています。私はこのサイトや他のサイトから収集された多くのサンプルから作業しており、すべてがかなり簡単に思えますが、完全には機能しません。具体的には、ドラッグされた要素がドロップターゲットを通過したときにドロップターゲットの外観を変更する「dragenter」ハンドラーを実装しようとしています。まず、使用しているHTMLを表示します。

    <div cstyle="width: 900px; height: 600px; border: 1px solid #999">
        <div id="draggable" ses-draggable style="width: 200px; height: 150px; background-color: #777">Drag Me!</div>
        <div id="dropTarg1" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 1</div>
        <div id="dropTarg2" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 2</div>
        <div id="dropTarg3" ses-drop-target style="width: 100px; height: 100px; border: 1px solid #888; background-color: #aaa">Drop target 3</div>
    </div>

2つのディレクティブのコードは次のとおりです。

ems2App.directive('sesDraggable', function () {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {
            angular.element(elem).attr("draggable", "true");
        }
    };
});

ems2App.directive('sesDropTarget', function () {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {
            elem.bind('dragenter', function (e) {
                angular.element(e.target).addClass('divDragOver');
            });
            elem.bind('dragleave', function (e) {
                angular.element(e.target).removeClass('divDragOver');
            });
        }
    };
});

divDragOverクラスは次のとおりです。

.divDragOver {
    border: 3px solid black;
    background-color: green;
}

ドラッグされた要素がドロップターゲットの1つをドラッグしているときに関数が適切に呼び出される限り、これはすべて正常に機能しますが、クラスの変更はブラウザに表示されません。ブラウザコンソールには何も表示されないため、エラーはスローされず、ドロップターゲット要素の外観は変更されません。

ステファノ・ダルピアス

投稿とまったく同じHTMLを使用している場合、スタイルの変更が表示されない理由は、単にCSSが原因です。マークアップの要素はいくつかのインラインスタイルで定義されており、それらはクラスで定義されているどのスタイルよりも優先されます(!importantはありませんしたがって、クラスはおそらく正しく適用されますが、表示される境界線と背景は、インラインで定義されたものである、優先度の高いもののままです。

インラインスタイルを削除し、代わりにCSSクラスを使用すると、divDragOverクラスが定義した新しいスタイルよりも優先される限り、期待どおりに機能します。そのためには、クラスを定義する前に新しいクラスを定義するだけで十分divDragOverです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

angleJsディレクティブのリンク関数内の要素タグの座標を取得する方法

分類Dev

Angularディレクティブは要素スタイルの変更をリッスンします

分類Dev

Angular JSディレクティブ、リンク関数の双方向データバインディングを変更します

分類Dev

ディレクティブのリンク関数からDOM階層の要素を取得します[AngularJS]

分類Dev

anglejsディレクティブの関数として属性をトリガーします

分類Dev

AngularJSディレクティブ内のトランスクルージョンされた要素をクリックして関数を呼び出す

分類Dev

ディレクティブのリンク関数をオーバーライドします

分類Dev

anglejs-ディレクティブを使用して親スコープを変更します

分類Dev

anglejs-テンプレート内のディレクティブ要素をコピーします

分類Dev

anglejsの特定のディレクティブを更新します

分類Dev

anglejsディレクティブウェイクスコープモデルからの入力のプレースホルダーを変更します 'undefined'

分類Dev

Angularjs:ディレクティブでモデルの変更をリッスンします

分類Dev

コントローラ変数の変更時にディレクティブによって作成された要素を更新します

分類Dev

anglejsディレクティブはコントローラー関数を呼び出しません

分類Dev

anglejsディレクティブはコントローラー関数を呼び出しません

分類Dev

ディレクティブ関数属性の引数を取得し、別のコントローラーangularjsで変更します

分類Dev

ディレクティブのリンク関数のイベントでスコープ変数を変更する

分類Dev

anglejsディレクティブのFoundation5アコーディオンが例外をスローします

分類Dev

リンカ関数のスコープはangularjsディレクティブで何を表しますか

分類Dev

ディレクティブのリンク関数の値をAngularJsモデルに設定します

分類Dev

変数を監視して、ディレクティブ内の関数をトリガーします

分類Dev

anglejsのURLに従ってボディのクラスを変更します

分類Dev

ディレクティブ関数を動的に変更する

分類Dev

子ディレクティブで親ディレクティブのコントローラースコープ変数にアクセスします

分類Dev

anglejsディレクティブにリンク関数を含めることは必須ですか?

分類Dev

子要素のクラスを変更するための親のAngularディレクティブ?

分類Dev

AngularJS:transcludeを使用してディレクティブに関連付けられた要素を変更します

分類Dev

非ディレクティブコントローラ関数内の属性値にアクセスします

分類Dev

リンク関数のディレクティブの子要素にイベントをバインドします

Related 関連記事

  1. 1

    angleJsディレクティブのリンク関数内の要素タグの座標を取得する方法

  2. 2

    Angularディレクティブは要素スタイルの変更をリッスンします

  3. 3

    Angular JSディレクティブ、リンク関数の双方向データバインディングを変更します

  4. 4

    ディレクティブのリンク関数からDOM階層の要素を取得します[AngularJS]

  5. 5

    anglejsディレクティブの関数として属性をトリガーします

  6. 6

    AngularJSディレクティブ内のトランスクルージョンされた要素をクリックして関数を呼び出す

  7. 7

    ディレクティブのリンク関数をオーバーライドします

  8. 8

    anglejs-ディレクティブを使用して親スコープを変更します

  9. 9

    anglejs-テンプレート内のディレクティブ要素をコピーします

  10. 10

    anglejsの特定のディレクティブを更新します

  11. 11

    anglejsディレクティブウェイクスコープモデルからの入力のプレースホルダーを変更します 'undefined'

  12. 12

    Angularjs:ディレクティブでモデルの変更をリッスンします

  13. 13

    コントローラ変数の変更時にディレクティブによって作成された要素を更新します

  14. 14

    anglejsディレクティブはコントローラー関数を呼び出しません

  15. 15

    anglejsディレクティブはコントローラー関数を呼び出しません

  16. 16

    ディレクティブ関数属性の引数を取得し、別のコントローラーangularjsで変更します

  17. 17

    ディレクティブのリンク関数のイベントでスコープ変数を変更する

  18. 18

    anglejsディレクティブのFoundation5アコーディオンが例外をスローします

  19. 19

    リンカ関数のスコープはangularjsディレクティブで何を表しますか

  20. 20

    ディレクティブのリンク関数の値をAngularJsモデルに設定します

  21. 21

    変数を監視して、ディレクティブ内の関数をトリガーします

  22. 22

    anglejsのURLに従ってボディのクラスを変更します

  23. 23

    ディレクティブ関数を動的に変更する

  24. 24

    子ディレクティブで親ディレクティブのコントローラースコープ変数にアクセスします

  25. 25

    anglejsディレクティブにリンク関数を含めることは必須ですか?

  26. 26

    子要素のクラスを変更するための親のAngularディレクティブ?

  27. 27

    AngularJS:transcludeを使用してディレクティブに関連付けられた要素を変更します

  28. 28

    非ディレクティブコントローラ関数内の属性値にアクセスします

  29. 29

    リンク関数のディレクティブの子要素にイベントをバインドします

ホットタグ

アーカイブ