2013-03-02 26 views
1

在HTML中,我想要顯示多行項目(任務時間軸)。 在每一行中,甘特圖項,甘特圖用於繪製一年365天內顯示的365個小方框,這些小方框呈現爲 。 並且每一行都需要顯示一個藍色塊,這意味着該任務的分配週期。 {{timeline(item.data.sDate,item.data.eDate)}},每行只包含一個藍色塊。當我使用angularJS ng-repeat時,它不顯示我在javascript中添加的內容

HTML

<ul> 
    <li ng-repeat="item in items.entities"> 
    <ul class="gantt-items" style="width: 9150px; height: 35px" > 
     <li class="gantt-item" >    
      <ul class="gantt-days"> 
      </ul>  
     </li>   
     </ul> 
    {{timeline(item.data.sDate,item.data.eDate)}} 
    </li> 
</ul> 

JS

angular.module('myApp', ['ngResource']); 
    function MainCtrl($scope,$resource){ 
     $(document).ready(function(){ 
     ... 
     for(var i = 1; i < 366; i++){ 
      $(".gantt-item ul.gantt-days").append('<li class="gantt-day" style="width: 25px"><span style="line-height: 35px; height: 35px">' + year + "-" + d.getMonth() + "-" + d.getDate() + '</span></li>'); 
      d = new Date(d.getTime() + (24 * 60 * 60 * 1000)); 
     } 
     ...}); 

$scope.timeline = function GetLength(startDate, endDate){ 
    var firstDay = new Date(new Date().getFullYear(), 0, 1); 

    var st1 = startDate.split("/"); 
    var dt1 = new Date(st1[2], st1[1] - 1, st1[0]); 

    var st2 = endDate.split("/"); 
    var dt2 = new Date(st2[2], st2[1] - 1, st2[0]); 

    var startPoint = ((dt1.getTime() - firstDay.getTime())/1000/60/60/24)*25; 
    var length = (1+(dt2.getTime() - dt1.getTime())/1000/60/60/24)*25; 
    $(".gantt-item ul.gantt-days").append('<span class="gantt-block" style="left:' + startPoint + 'px; width: ' + length + 'px; height: 27px"><strong class="gantt-block-label">Duration</strong></span>'); 
}; 

當我使用NG-重複,$( 「甘特項ul.gantt天」) .append不起作用。 時間軸(item.data.sDate,item.data.eDate)在每行中重複n次, 假設每個原始行只顯示一個項目n行。

回答

2

這是因爲ng-repeat指令中的元素出現在DOM編譯之後。
嘗試使用$watch

$scope.$watch('items.entities', function(){ 
    for(var i = 1; i < 366; i++){ 
     $(".gantt-item ul.gantt-days").append('<li class="gantt-day" style="width: 25px"><span style="line-height: 35px; height: 35px">' + year + "-" + d.getMonth() + "-" + d.getDate() + '</span></li>'); 
     d = new Date(d.getTime() + (24 * 60 * 60 * 1000)); 
    } 
}); 
+0

謝謝您的解決方案。但是,我的ng-repeat在每行中重複n次,每行只能顯示1個項目,並重復n行。 – elephant 2013-03-02 17:45:06

+0

更具體的我的重複問題。 [鏈接] http://stackoverflow.com/questions/15177632/multiple-ng-repeat-of-same-item – elephant 2013-03-02 18:00:41

+0

@elephant我有與ng-repeat相同的問題。我有一個包含5個項目的數組,每個項目重複5次,共25行。如果我嘗試3件商品,則每件商品重複3次。我無法在JS小提琴或我的項目之外的任何地方重現這一點。你能告訴我這個問題的解決方案是什麼? – 2013-04-06 14:21:43

相關問題