我一直在嘗試使用觸發我的輸入元素的click事件的角度在其他元素NG點擊,這樣的:angular.element觸發單擊事件不起作用
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');
};
我知道有這個其他類似的問題,但我已經嘗試過使用WHA牛逼他們說(這一羣人顯示我使用相同的代碼),例如:
- 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
});
}
};
};
我不斷收到此錯誤:
Error: [jqLite:nosel] http://errors.angularjs.org/1.5.0-beta.1/jqLite/nosel
這裏是展示錯誤plunker:http://plnkr.co/edit/rWcCbixwFArYhCxUVTsv?p=preview
問題是什麼?
請創建演示該問題 –
@GaneshKumar我已經更新了我一個plunker問題上plunkr。 – celsomtrindade
問題是,你沒有這樣做的角度的方式,所以毫不奇怪它不起作用。你的所有版本都不可靠,因爲它們試圖處理不在指令上下文中的DOM,所以當你嘗試使用它時,模板可能不在DOM中。 – dfsq