2016-09-16 64 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我已經更新了答案,並添加了第二個解決方案。看,那可能工作。 –