2016-08-21 14 views
2

私はangularjsを初めて使用しています。Angularjs:element.bind( 'click')イベントは機能しますが、element.bind( 'load')イベントは機能しません。

app.js

var app = angular.module('myApp',[]); 

app.directive('orientable', function() {  
    return { 
     link: function(scope, element, attrs) { 

      element.bind("load" , function(e){ 
          alert('hiii1'); 
        } 
       }); 
     } 
    } 
}); 

index.htmlを

<div ng-app="myApp" ng-controller="myCtrl"> 
    <p orientable> 
     Hiii 
    </p> 
</div> 

マイ要件

私は、それがロードされてしまった後に要素 'P' は機能をバインドする必要があります。ここで私のコードの警告メッセージが表示されないので、 'p'要素は 'load'にバインドされていません。しかし、私がapp.jsのコードをからelement.bind( "load"、function(e){ to 'element.bind( "click"、function(e){'、 'p '要素は、クリックイベントをバインドを得たので、私はをクリックしたときに 『P』の警告メッセージが表示された要素、私は私のようになりますどのように。 『ロード『イベントP』への要素のバインド』を

+2

リンク機能で直接実行してみませんか?なぜあなたは 'element.bind( 'load')'を必要としますか? –

+0

この例はテスト用です。私は、カスタムディレクティブを再帰的に呼び出す必要がある別の例があります。ここでは、より動的なdivがロードされます。ダイナミックロードされたdivの処理方法を教えてください。私はその権利のために 'element.bind(' load ')'が必要です。動的divが追加されたときに関数を呼び出す必要があります。 –

+0

私が欲しいのは、 'onload'機能です。 anglejsでその1つを使用する方法? –

答えて

0
link: function(scope, element, attrs) { 

    element.bind("load" , function(e){ 
        alert('hiii1'); 
      } 
     }); 
} 

https://docs.angularjs.org/api/ng/service/ $#をコンパイルします。 - リンク -

テンプレートがクローン化された後にそれが実行される。

したがって、すでにロードされている要素にロードイベントをバインドしています。

link機能が必要です。

+0

あなたが投稿したのと同じコードを使用しています。しかし、それが動作していない –

+0

@ SuumanthUdupaそれはあなたのコードです。私は私の答えでそれが繰り返されるので、要素が既にロードされているときにロードイベントを設定していることは明らかです。必要なロードイベントはリンク関数です。 – gyc

関連する問題