仅在第二次单击后才触发位于组件中的AngularJS元素

时间:2018-09-27 10:18:29

标签: javascript angularjs dom

我有AngularJS(1.x)组件-确切地说是实际的指令, 并且仅在第二次点击后才能触发/处理/操作此指令中的元素。

例如:除非您单击两次,否则下拉菜单将不会切换。 第二次单击后,切换将在每次下一次单击时显示。

就像元素没有在DOM中被消化一样。

这是组件调用:

<dropdown-custom-component-example></dropdown-custom-component-example>

这是组件html文件:

<div class="dropdown">
  <a class="btn pl-2" data-toggle="dropdown">
    <i class="icon-options"></i>
  </a>
  <div class="dropdown-menu">
    <a class="dropdown-item" data-toggle="modal" data-target=".create-supplier">
      <i class="fa icon-plus text-primary"></i>&nbsp;&nbsp;
      Action
    </a>
  </div>
</div>

2 个答案:

答案 0 :(得分:0)

在检查$ digest是否未在进行中之后,您可以尝试在指令中自己消化:

if(!$scope.$$phase) $scope.$digest();
// or $apply ..

希望这可以解决您的问题:)

答案 1 :(得分:0)

大多数时候AngularJS不响应是因为 Angular上下文之外发生了什么,在这种情况下,尝试使用内置的AngularJS指令复制所需的功能很有用。 >

访问组件的某些实现会很有用。但是,使用您提供的所有信息,您可以使用ngClick内置指令:

<div class="dropdown">
  <a class="btn pl-2" data-toggle="dropdown">
    <i class="icon-options"></i>
  </a>
  <div class="dropdown-menu">
    <a class="dropdown-item" data-toggle="modal" data-target=".create-supplier" ng-click="yourFunctionHere(this)">
      <i class="fa icon-plus text-primary"></i>&nbsp;&nbsp;
      Action
    </a>
  </div>
</div>

AngularJS Docs - ngClick