angular.element触发click事件不起作用

cel*_*ade 2 angularjs

我一直在尝试使用其他元素中的角度ng-click在我的input元素中触发click事件,如下所示:

HTML

<div class="myClass" ng-click="vm.selectImage()" nv-file-drop uploader="vm.uploadImage">
    Drop your image here
</div>
<div ng-hide="!hideInput">
    <input type="file" id="imgSelect" nv-file-selec uploader="vm.uploadImage" />
</div>
Run Code Online (Sandbox Code Playgroud)

调节器

vm.selectImage= selectImage;
function selectImage() {
    angular.element('#imgSelect').trigger('click');
};
Run Code Online (Sandbox Code Playgroud)

我知道还有其他类似的问题,但我试图使用他们所说的(其中一组显示我正在使用的相同代码),例如:

但即便如此,甚至使用这样的指令:

.directive('selectImg', selectImg);
function selectImg() {
    return {
        restrict: 'A',
        link: function(scope, element) {
            element.bind('click', function(e) {
                //option 1
                angular.element(e.target).siblings('.imgSelect').trigger('click');

                //option 2
                angular.element( document.querySelector( '#imgSelect' ) ).trigger('click');

                //option 3
                var myEl = angular.element( document.querySelector( '#imgSelect' ) );
                myEl.trigger('click');

                //option 4
                angular.element('#imgSelect').trigger('click'); //angular way
            });
        }
    };
}; 
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

错误:[jqLit​​e:nosel] http://errors.angularjs.org/1.5.0-beta.1/jqLit​​e/nosel

这是一个演示错误的plunker:http://plnkr.co/edit/rWcCbixwFArYhCxUVTsv?p = preview

问题是什么?

Mat*_*at. 5

确定更新了我的答案.这似乎你必须打破当前的$ apply()循环.一种方法是使用$ timeout()

setTimeout(function() {
    document.getElementById('imgSelect').click()        
 }, 0);
Run Code Online (Sandbox Code Playgroud)

检查答案在AngularJS中触发输入文件单击事件