2016-09-22 97 views
0

我想在AngularJs控制器中將事件綁定到動態生成的html,但我不能。我發現下面的代碼片段事件綁定到動態生成的HTML自動調用

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

但它立即調用DeleteImage()函數。我想添加具有功能的deleteImage圖標,以從ImageuploadList中移除圖像。任何想法,如何做到這一點? 這裏是我的代碼:

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

閱讀代碼 「div.bind( '的onclick',$ scope.DeleteImage());」,它實際上是調用函數。

請檢查您是否要加上 「$ scope.DeleteImage()」 中的單引號

1

此代碼:

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

會的onclick綁定到調用刪除圖像的結果。你需要傳遞一個函數指針,而不是調用函數(()一樣),即:

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

,或者使用內聯函數:

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

它工作得很好,但需要稍加修改,如下所示: div.bind('click',function(){$ scope.DeleteImage();}); 而不是'onclick'只需'點擊'。 – Sachin

+0

不知道(你的?)的angularjs控制器中有什麼可用的,我保留你綁定的事件名稱。很高興你把事情解決了。 –