2016-03-21 7 views
-1

テーブルを作成しています。その頭の中には、7つの列が並んでいます(日曜日、月曜日...)。 今はtbodyの列に、私は列を日として繰り返しています(私は30日持っています)。 それは私たちが知っているように、その単一のすべての30の項目を繰り返しています。 だから、私は体の行に最初の7つの項目が必要です。次に次の7つは次の行に.. 解決策は役に立ちますか? はここで$ scope.staticEventsが配列である'td'列にng-repeatを使用する場合のテーブル行の変更方法(可能な場合)

<table class="table table-bordered"> 
<thead> 
    <th>Sunday</th> 
    <th>Monday</th> 
    <th>Tuesday</th> 
    <th>Wednesday</th> 
    <th>Thursday</th> 
    <th>Friday</th> 
    <th>Saturday</th>         
</thead> 
<tbody> 
    <td ng-repeat="day in staticEvents"><span>{{day.title}}</span></td> 
</tbody> 

は30個のオブジェクト(APIレスポンスを)持っている私のマークアップです。

+0

長さ7を有する配列の配列に 'staticEvents'を変換しないのはなぜ? –

+1

これは私が今やっていることです。私はanglejsにこのシナリオのための何か(任意の指令)があるかどうかをチェックしようとしていました。 それがあれば、なぜ私のコントローラに長いコードを書くのでしょうか? –

+0

まあ、カレンダーのプラグインがあるかもしれませんが、何も組み込まれていないと思います。 –

答えて

1

私はあなたが助けてくれることを願っています。これは$ indexで行うことができます。

<div data-ng-app="" data-ng-init="days=['1','2','3','4','5','6','7','8','9','10','11','..']" class="container"> 
    <table class="table table-bordered"> 
    <thead> 
     <th>Sunday</th> 
     <th>Monday</th> 
     <th>Tuesday</th> 
     <th>Wednesday</th> 
     <th>Thursday</th> 
     <th>Friday</th> 
     <th>Saturday</th> 
    </thead> 
    <tbody> 
     <tr ng-repeat="day in days" ng-if="$index % 7 == 0"> 
     <td class="col">{{days[$index]}}</td> 
     <td class="col">{{days[$index + 1]}}</td> 
     <td class="col">{{days[$index + 2]}}</td> 
     <td class="col">{{days[$index + 3]}}</td> 
     <td class="col">{{days[$index + 4]}}</td> 
     <td class="col">{{days[$index + 5]}}</td> 
     <td class="col">{{days[$index + 6]}}</td> 

     </tr> 
    </tbody> 
    </table> 

</div> 

Fiddle

+1

あなたの回答は一番良く見えますが、私はanglejsバージョン1.3でそれを取得していません。 1.5バージョンで、そのうまく動作します。 私のメインプロジェクト(アプリ)は1.3です。ですから、私はangular.min.jsファイルを更新する必要があります。 –

+1

angularjs 1.3で動作するものを教えてください。 –

+1

私は問題がどこにあるかを知った。それは私のデータだった。 Junaid bhaiに感謝します。 –

1

私はあなたのデータ構造を少し変更することをお勧め。シンプルなアレイでは、ng-ifまたはng-switchの1回の反復で複数行のテーブルを作成することは困難です。 このデータ構造の設計では、日曜日に第1日曜日、第2日曜日、月曜日があります。

"月"を準備してから行くことができる2次元配列を作成してみてください2回の繰返しによって何かのように:

コントローラー:

$scope.month = makeMonth($scope.staticEvents, 3); 

function makeMonth(days, firstIndex) { 
// days[] - array of days in month 
//fisrstIndex - index of the first day in month: 0=Sunday, ..., 6=Saturday 
    if (!angular.isArray(days) || firstIndex < 0 || firstIndex > 6) { 
     return []; 
    } 
    var month = []; 
    var row = []; 
    for (i=0; i < days.length + firstIndex; i++) { 
     var day = { 
      title: "" 
     }; 
     if (i >= firstIndex) { 
      day = days[i - firstIndex]; 
     } 
     row.push(day); 
     if (i % 7 === 6) { 
      month.push(row); 
      row = []; 
     } 
    } 
    if (row != []) { 
     month.push(row); 
    } 
    return month; 
} 

テンプレート:

<table class="table table-bordered"> 
    <thead> 
     <th>Sunday</th> 
     <th>Monday</th> 
     <th>Tuesday</th> 
     <th>Wednesday</th> 
     <th>Thursday</th> 
     <th>Friday</th> 
     <th>Saturday</th>         
    </thead> 
    <tbody> 
     <tr ng-repeat="row in month"> 
      <td ng-repeat="day in row"><span>{{day.title}}</span></td> 
     </tr> 
    </tbody> 
</table> 
+1

このバージョンも1.3バージョンでは動作しません。 :( –

+0

いくつか具体的なエラーがありますか?古いバージョンの1.0.3で作成したフィーバーは正常です:https://jsfiddle.net/jankovskyp/p79cn7n8/ –

+1

このデータを一度試してください ['null 'WeeklyOff'、 'WeeklyOff'、 'General'、 'General'、 'General'、 'General'、 'WeeklyOff'、 'WeeklyOff'、 'General'、 'General' '一般'、 'WeeklyOff'、 'WeeklyOff'、 'General'、 'General'、 'General'、 'General'、 'General'、 'WeeklyOff'、 'WeeklyOff'、 'General'、 'General'、 'General' –

関連する問題