绑定到动态生成的HTML的事件会自动调用

时间:2016-09-22 09:47:45

标签: jquery angularjs file-upload angularjs-scope

我试图将事件绑定到AngularJs控制器中动态生成的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);
            }
        }

2 个答案:

答案 0 :(得分:1)

查看代码&#34; div.bind(&#39; onclick&#39;,$ scope.DeleteImage());&#34;,它实际调用该函数。

请检查是否要添加&#34; $ scope.DeleteImage()&#34;用单引号

答案 1 :(得分:1)

此代码:

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

将onLlick绑定到调用DeleteImage的结果。你需要传入一个函数指针,而不是调用函数(which()),即:

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

或使用内联函数:

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