0

嗨,我需要在第一个元素中触发点击 #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>

问题:如何从左控制器获取事件,找到 .element-for-trigger-click 并使用原生 js 触发右控制器的点击。 在此处输入图像描述

4

2 回答 2

0

阿罗,

所以在下面的线程中,您可以找到如何通过给定元素上的原生 JS 来“模拟”点击事件的信息(id 很难)

如何使用 JavaScript 模拟点击?

但是我真的不推荐这种方法,特别是如果您使用 angularJS,因为有一些方法可以与 angular lib 本身进行控制器到控制器的通信,例如:

  • 使用角度事件总线($emit、$broadcast 和 $on)
  • 使用服务
  • 使用状态容器的模式,如 redux ( https://github.com/reactjs/redux )
  • 可能还有更多。
于 2017-03-19T22:06:25.410 回答
0

您可以通过以下方式发送 click 事件:

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);

.firstChild顺便说一句,如果您只是像所有其他元素一样为该元素提供一个 ID,则不必使用。

于 2017-03-19T22:07:18.670 回答