2016-09-16 30 views
0

希望这很容易,因为我认为它是,我的大脑已经死了,但我找不到任何人在线做这件事。Angular JS在事件发送元素

<div class="item" ng-repeat="group in groups"> 
     <ion-item class="item-stable" 
       ng-click="toggleGroup(group)" 
       ng-class="{active: isGroupShown(group)}"> 
      <i class="icon" ng-class="isGroupShown(group) ? 'ion-minus' : 'ion-plus'"></i> 
     &nbsp; 
     Group {{group.name}} 
     </ion-item> 
     <ion-item class="item-accordion" 
       ng-repeat="item in group.items" 
       ng-show="isGroupShown(group)"> 
     {{item}} 
     </ion-item> 
    </div> 

例如这里:https://codepen.io/anon/pen/ORXWkp

除了我不希望有 “群”。顶部只有一个div,所以我需要通过isGroupShown()方法发送div。

我想在其他地方重复使用这些方法,所以我不想获取元素并以这种方式进行更改。即:

var multibutton = angular.element(element.getElementsByClassName("multi-files")); 

然后在isGroupShown()方法中使用multibutton。

编辑:基本上,我想知道这些功能运行时的父div。

+0

您可以使用'$ event'对象来获取点击的目标元素,但仅此而已。你有什么使用情况获得父母的div?你应该很少/从不真正需要类似角度的东西(解释为什么它不容易做到这一点)。 – tcooc

回答

0

1)也许你会使用

var multibutton = angular.element(element.getElementsByClassName("multi-files")[0]); 

代替:

var multibutton = angular.element(element.getElementsByClassName("multi-files")); 

因为getElement 小号 ByClassName返回数组,相比getElementById

2)也许问题是用局部变量声明。只需删除var
var multibutton = ...
multibutton =.....
然后您可以在该函数之外重新使用该函数。

+0

嗯,不,我刚刚添加了最后一部分,以防止某人告诉我执行multibutton,然后在我的isGroupShown方法中引用multibutton的回答。这有效,但不允许我重用该功能。 – user1427105

+0

@ user1427105我已经更新了答案,并添加了第二个解决方案。看,那可能工作。 –