在控制器中触发ng-repeat中第一个元素的第一个元素的单击

时间:2017-03-19 21:55:45

标签: javascript angularjs angularjs-1.6

我需要在第一个元素中触发点击#first> #second> #third> .element-for-trigger-click, 看到这里

<div id="first" ng-repeat="competition in prematchGameViewData track by competition.id">
    <div id="header">...</div>
    <div id="details">...</div>


    <div id="second" ng-repeat="(groupDate, groupGames) in competition.gamesGroupedByDate">     
        <div id="third" ng-repeat="prematchGame in groupGames track by prematchGame.id">
            <div class="element-for-trigger-click"></div>
            ...
        </div>
    </div>
</div>

问题: 如何从Left控制器获取事件,找到.element-for-trigger-click并触发右控制器上的本地js点击。 enter image description here

2 个答案:

答案 0 :(得分:0)

阿罗,

所以在以下主题中你可以找到如何通过原生JS在给定元素上“模拟”点击事件的信息(很难用id)

How to simulate a click with JavaScript?

但我真的不推荐这种方法,特别是如果你使用angularJS,因为有办法控制器与控制器通信角度lib本身,如:

  • 使用角度事件总线($ emit,$ broadcast和$ on)
  • 使用服务
  • 使用状态容器的模式,如redux(https://github.com/reactjs/redux
  • 可能还有更多。

答案 1 :(得分:0)

您可以使用以下命令发送点击事件:

var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0,
    false, false, false, false, 0, null);

var target = document.getElementById('third').firstChild;
target.dispatchEvent(evt);

顺便说一下,如果你只是给那个元素一个像你所有其他元素一样的ID,你就不必使用.firstChild