我是AngularJS的新手.我已经了解到我可以使用如下查询在DOM中找到元素:
var e = angular.element(document.querySelector('#id'));
var e = angular.element(elem.querySelector('.classname'));
Run Code Online (Sandbox Code Playgroud)
这对于按ID或CSS类名查找元素很有用.但是,我需要能够使用不同的方法找到元素.我有一个如下所示的元素:
<div my-directive class='myContainer'>...</div>
Run Code Online (Sandbox Code Playgroud)
我无法查询'myContainer',因为它重用了多少.出于这个原因,我想找到任何具有属性'my-directive'的元素.如何搜索DOM并找到使用'my-directive'的任何元素?
我注意到,当 Ionic 呈现相同的模板(用于多个视图)时,我被迫陷入了具有相同 html id 的多个元素的情况。
因此,如果我只是简单地使用document.getElementById(id),我会发现自己处于无法获得所需元素的情况。
(我想要当前渲染视图内的元素,而不是当前用户不在的其他视图的模板内的元素)
我应该如何解决这个问题?有没有办法从正在呈现的当前视图的边界内获取元素?
我一直在尝试使用其他元素中的角度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)