【发布时间】:2015-11-28 21:32:07
【问题描述】:
我一直在尝试使用其他元素中的角度 ng-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>
控制器
vm.selectImage= selectImage;
function selectImage() {
angular.element('#imgSelect').trigger('click');
};
我知道还有其他类似的问题,但我尝试使用他们所说的(其中一堆显示我正在使用的相同代码),例如:
- how can i trigger the click event of another element in ng-click using angularjs?
- angular-file-upload - how to make drop zone clickable?
- How to get element by classname or id
但即便如此,甚至使用这样的指令:
.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
});
}
};
};
我不断收到此错误:
错误:[jqLite:nosel]http://errors.angularjs.org/1.5.0-beta.1/jqLite/nosel
这里有一个 plunker 来演示错误:http://plnkr.co/edit/rWcCbixwFArYhCxUVTsv?p=preview
有什么问题?
【问题讨论】:
-
请创建一个演示问题的 plunkr
-
@GaneshKumar 我已经用 plunker 更新了我的问题。
-
问题是你不是用 Angular 的方式做的,所以它不起作用也就不足为奇了。您的所有版本都不可靠,因为它们尝试处理不在指令上下文中的 DOM,因此当您尝试使用模板时,模板可能不在 DOM 中。
-
angular.element() 没有 trigger() 方法。 docs.angularjs.org/api/ng/function/angular.element
-
删除选择器或添加jquery,jqury lite不支持选择器
标签: angularjs