2015-12-15 68 views
0

我非常非常新的角度JS和時間對NG-重複的第一個項目,最初點擊,並有如下要求:觸發每個新的數據加載

我有一個NG重複,如下圖所示:

<div class="panel" ng-repeat="(appname, value) in chart.accordionData" style="margin-top: 0;"> 

    <div class="accordion collapsed" data-parent="#accordion1" 
     data-toggle="collapse" 
     data-target="#{{appname.replace(' ','')}}"> 
     <div class="accordion-head" initial-select index="{{$index}}"> 
     <div class="arrow chevron"></div> 
     <h4><i></i>{{appname}}</h4> 
     </div> 
    </div> 

    <div class="accordion-body collapse" id="{{appname.replace(' ','')}}"> 
     <p class="highlightable" > 
      Some data 
     </p> 
    </div> 
</div> 

ng-repeat中的數據來自服務器。

所以,問題陳述我是ng-repeat下的第一個元素執行click觸發,.accordion-head所以,在列表中的第一項始終是敞開的。我嘗試了各種方法來放置$watch等,但是當列表中的項目數量相同時,觸發器不會觸發。

(在列表中的第一項具有即使加載新的數據被點擊)

我還以爲寫指令initial-select,並進行點擊基於指數但只發生一次。我真的需要專家的建議。

任何解決方案?

回答

0

我認爲最簡單的選擇是使用data-ng-init =「collapse =!$ first;」。

另一種選擇: 您使用過Angular UI Bootstrap嗎?另外,您是使用$ http還是$ resource從服務器獲取數據?

如果使用$ resource,可以在成功回調(攔截器響應)上設置一個變量open = true。然後,您可以將此變量綁定到Angular UI Bootstrap is-open屬性或您的數據切換。另外,通過$ resource你可以設置data-ng-if =「chart.accordionData。$ resolved」(或者圖表$。$根據你的設置解析),這很好。

0

您可以使用手錶觀看陣列內容。

看看下面的小提琴: http://jsfiddle.net/akonchady/w0qdsen7/3/

我用一個變量來跟蹤時,因爲直接觀看陣列陣列內容的變化會更加佔用大量內存。

下面是手錶可變主代碼:

$scope.$watch('arrModified', function(newValue, oldValue) { 
    if(newValue) { //array is modified 
     //Trigger ng-repeat div click 
    setTimeout(function() { 
    $('.item:first').trigger('click'); 
    $scope.arrModified = false; 
    $scope.$digest(); 
    }, 0); 
    } 
});