2016-06-13 11 views
0

マイ指令のリンク機能を以下に示した文書のクリック時にリンク・ディレクティブのために働いていないジャスミンは

it('Some other box click', function() { 
      spyOn($rootScope, '$emit'); 
      var theboxelement = '<button class="thebox"></button>'; 
      var thebox = $(theboxelement); 
      $('body').append(thebox); 
      var spyEvent = spyOnEvent('.thebox', 'click'); 

      thebox.trigger("click"); 
      expect($rootScope.$emit).toHaveBeenCalledWith('closeDetailBox',theboxelement); 
      thebox.remove(); 
     }); 

EMITイベントでなければなりません引き金を引かれて捕まえられたが、それは決して誘発されなかった。私はエラーが発生します - "予想されるスパイ$は[closeDetailBox '、' ']で呼び出されましたが、決して呼び出されませんでした。"

私は2日以来この問題を扱っていますが、修正できませんでした。

答えて

2

コードごとに、リンク機能を呼び出す必要があると思います。その後、残りの作業を行います。 mydirective.link()のようなもの。これにより、以下の関数呼び出しが解決されます。

以上が動作しない場合は、おそらく、以下の項目をチェックすることができます -

あなたのモジュールの依存関係が正しく解決されているかどうかを確認します。

ローカルジャスミンデバッグを使用します。これは、おそらくあなたの流れを確認する最も簡単な方法です。

+0

ありがとうございます!リンク機能の呼び出しはすべて必要でした。今は魅力のように機能します。ありがとうございました。 –

+0

@anandpatilどのようにリンク機能を呼び出すことができますか?スコープ、要素、attrsのパラメータを渡しましたか? –

+0

私は自分の関数でそれらを必要としなかったので、パラメータなしでdirective.link()を使用しなければなりませんでした。しかし、あなたがそれらを必要とする場合は、それらを渡す必要があります。 –

0

ディレクティブに基づいて、イベントはディレクティブの有効範囲から放出されます。これが$ rootScopeの$ emit関数を起動させることは確実ですか?

$ rootScopeで$ broadcastを使うべきでしょうか?

+0

私はデバッグして見ましたが、ジャスミンコードでトリガした後、指示文のリンクコードを入力していません。いいえ、なぜか! –

+0

$はあなたのディレクティブにjQueryに関連していますか? – Paqman

+0

はい、それはjQueryに関連しています –