2016-08-02 5 views
0

以下の指示文が呼び出されない理由を説明できる体がありますか?ボタンに直接ディレクティブを追加すると呼び出されます。 $ timeoutを使って追加しようとしましたが、まだ運がありません。プログラムで追加したときに角度指示文が機能しない理由

<html>  
     <head> 
      <title>AngularJS</title> 
      <script src = "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 

      <script type="text/javascript"> 

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

      app.controller('MyCtrl',function($scope,$timeout){ 

      document.getElementById('myBtn').setAttribute('my-directive',''); 

      }); 

      app.directive('myDirecitive',function(){ 

      function linkFn (scope,element,attrs){ 
       element.bind('click',function(){ 
        alert('Clicked'); 
       });   
      } 

      return { 
       restrict:'A', 
       link:linkFn 
      } 
      });   

      </script> 

     </head> 

     <body ng-app="MyApp", ng-controller="MyCtrl">  
      <button id="myBtn">Test</button>   
     </body> 
    </html> 
+0

ディレクティブ名はちょうど推測 –

+0

間違って綴られていますが、おそらく上に読みたいと思うでしょうplunkerを作成しました/docs.angularjs.org/api/ng/type/$rootScope.Scope#$apply)。 – adamdport

+0

@adamdport私は$ applyをやってみた。それでも動作しません。 – Ambegodas

答えて

1
app.directive('myDirecitive',function(){ 

それは、コントローラ内のDOMを照会しないことが最善です

app.directive('myDirective',function(){ 

でなければなりません。これをしないでください

document.getElementById('myBtn').setAttribute('my-directive',''); 

my-directiveは、属性ディレクティブとして作成されたので、このような要素に直接それを追加するのがベストでしょう。 /:

<button id="myBtn" my-directive>Test</button> 

私は

https://plnkr.co/edit/pispsMzbJIxrIDyIv81N?p=preview

(HTTPS [。)$スコープ$(適用]
+0

ありがとう..それはタイプミスだった..しかし、それでも動作しません。それを試しましたか? – Ambegodas

+0

これでうまくいくはずです。私はプランナーを作成しました –

+0

Yap。ありがとう。私がその質問で言及したように、あなたがそれを直接追加するなら、それは働いています。しかし、私はそれをjavaスクリプトを使用して追加する場合、これは動作しません。 – Ambegodas

関連する問題