2016-09-22 32 views
0

AngularJsコントローラで動的に生成されたHTMLにイベントをバインドしようとしていますが、できません。次のコードスニペットが見つかりました動的に生成されたHTMLにバインドされたイベントは自動的に呼び出されます。

var div = angular.element("del-" + input.name); 
div.bind('onclick', $scope.DeleteImage()); 

しかしすぐにDeleteImage()関数が呼び出されました。 ImageuploadListから画像を削除するために、deleteImageアイコンに機能を追加したいと思います。任意のアイデア、それを行う方法? 、そのは実際に関数を呼び出す; "div.bind( 'onclickの'、$ scope.DeleteImage())" のコードを見てみると

function readImageURL(input) { 
 
      if (input) { 
 
       var reader = new FileReader(); 
 
       reader.onload = function (e) { 
 
        $('#pageImageList').append('<span class="upload-image recent-images"> <a id="del-' + input.name + '" href="javascript:void(0);" class="glyphicon glyphicon-trash" ></a><img src="' + e.target.result + '" id="' + input.name + '" width="100%" height="100%"></span>') 
 
        var div = angular.element("del-" + input.name); 
 
        div.bind('onclick', $scope.DeleteImage()); 
 

 
        $scope.imageUpload.push({ 
 
         ImageUrl: e.target.result, 
 
         ImageName: input.name 
 
        }); 
 
       }; 
 
       reader.readAsDataURL(input); 
 
      } 
 
     }

答えて

1

:ここに は私のコードです。あなたが追加したい場合は

を確認してください "$ scope.DeleteImage()" 単一引用符

1

にこのコードは:

div.bind('onclick', $scope.DeleteImage()); 

DeleteImageを呼び出した結果にonclickをバインドします。 、それがうまく機能

div.bind('onclick', function() { $scope.DeleteImage(); }); 
+0

が、少し修正が必要になります。

div.bind('onclick', $scope.DeleteImage); 

またはインライン関数を使用する:あなたはすなわち、関数(ない())を呼び出していない、関数ポインタを渡すに必要以下のようになります。 div.bind( 'click'、function(){$ scope.DeleteImage();}); 'onclick'の代わりに をクリックするだけです。 – Sachin

+0

あなたのanglejsコントローラで何が利用できるのか分からず、あなたがバインドしていたイベント名を保持しました。あなたがそれを整理してうれしいです。 –

関連する問題