我一直在尝试使用其他元素中的角度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)
我一直收到这个错误:
错误:[jqLite:nosel] http://errors.angularjs.org/1.5.0-beta.1/jqLite/nosel
这是一个演示错误的plunker:http://plnkr.co/edit/rWcCbixwFArYhCxUVTsv?p = preview
问题是什么?
确定更新了我的答案.这似乎你必须打破当前的$ apply()循环.一种方法是使用$ timeout()
setTimeout(function() {
document.getElementById('imgSelect').click()
}, 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12692 次 |
| 最近记录: |