2016-11-15 5 views
0

に記入:ループ円でthroughtリストと私はそれは私が正確にやろうものを、説明するのは難しいので、できるだけ明確にそれを説明するために全力を与えるテーブル

私はこの名前のリストを持っています:このリストで

{ 
    "Items": [ 
     { 
      "Id": 0, 
      "Name": "Robinson" 
     }, 
     { 
      "Id": 1, 
      "Name": "Walker" 
     }, 
     { 
      "Id": 2, 
      "Name": "Henderson" 
     } 
} 

私は(私はどのように説明の下に)私は私のループを開始する名前を、選択することができます。

は今、私はこの添付ファイルのようにループにテーブルを必要とする:

enter image description here

だから私のループ今月のリスト(今年の例えば「12月」)。最初のテーブル行では、今月の最初の日(この例では "Thursday")の最初の日付(1)から開始し、次に3つのテーブルデータで名前をループします。私の選択した名前(この例では "Walker"となるので、私のリストの2番目の項目です)。月の終わりまでリストをループします(歩行者→ヘンダーソン→ロビンソン→歩行者などまで私はまた、チェックしなければならない、それは現在のループテーブルの行の日は日曜日であり、このテーブルの行をスキップし、 "日曜日"を記入し、次のテーブル行に移動します。モンゴルの正確な日(1-30,1-31または2月1-28/29)をループし、現在の日(月曜日〜日曜日)をループし、選択したアイテムから始まる円でリストをループする必要があります月曜日に逃げて月末になってしまいました。私はこのことをどうやって考えているのですか?ng-repeatでこれをやりたいのですが、誰かがアイデアを持っていますか?ありがとう

EDIT:私のスタートアイテムは「ウォーカーであれば、このようなので、それが必要ループ

{ 
    "Items": [ 
     { 
      "Id": 0, 
      "Name": "Robinson" 
     }, 
     { 
      "Id": 1, 
      "Name": "Walker" 
     }, 
     { 
      "Id": 2, 
      "Name": "Henderson" 
     }, 
     { 
      "Id": 3, 
      "Name": "Cole" 
     } 
} 

それはそれは私が例えば私のリストにある3つの以上のアイテムを持っている、また、動作するはずです「:

行1 - > 1 - 木曜日 - ウォーカー - ヘンダーソン - コール

行2 - > 2 - 金曜日 - ロビンソン - ウォーカー - ヘンダーソン

行3 - > 3 - 土曜日 - コール - ロビンソン - ウォーカー

行4 - > 4 - 日曜日 - 日曜日 - 日曜日 - 日曜日

行5 - > 5 - 月曜日 - ヘンダーソン - コール - 私のリストが長い3つの項目以外のときロビンソン

のように...現時点では、繰り返し、同じ行のすべての項目を示しますので、それは〜するこのようなKS:

行1 - > 1 - 木曜日 - ウォーカー - ヘンダーソン - コール - ロビンソン

行2 - > 2 - Friday-ウォーカー - ヘンダーソン - コール - ロビンソン

これをどうすれば解決できますか?

答えて

2

いくつかのJSを使用して、ある月の曜日を取得し、配列を解析してからng-repeatにフィードすることができます。 Example plunker.

this postからコードを借りました。あなたのビューで、このような何か:あなたのコントローラで

<body ng-controller="MainCtrl"> 

    <select ng-model="selected" ng-change="shuffle(selected)"> 
    <option ng-repeat="i in menuItems" value="{{i.Name}}">{{i.Name}}</option> 
    </select> 

    <table> 
    <tr> 
     <th>Date</th> 
     <th>Day</th> 
     <th>07:00-12:00</th> 
     <th>12:00-17:00</th> 
     <th>17:00-22:00</th> 
    </tr> 
    <tr ng-repeat="n in month"> 
     <td>{{n.date}}</td> 
     <td>{{n.day}}</td> 
     <td ng-repeat="name in items">{{n.day !== "Sunday" ? name : n.day}}</td> 
    </tr> 
    </table> 
</body> 

、このような何か:

app.controller('MainCtrl', function($scope) { 
    $scope.menuItems = [ 
     { 
      "Id": 0, 
      "Name": "Robinson" 
     }, 
     { 
      "Id": 1, 
      "Name": "Walker" 
     }, 
     { 
      "Id": 2, 
      "Name": "Henderson" 
     }]; 

    $scope.month = getDaysArray(2016, 12); 
    $scope.items = ["Robinson", "Walker", "Henderson"]; 
    $scope.shuffle = function(selected) { 
    let index = $scope.items.indexOf(selected); 
    for (let i = 0; i < $scope.items.length; i++) { 
     if (i < index) $scope.items.push($scope.items.shift()); 
    } 
    } 

}); 

function getDaysArray(year, month) { 
    var numDaysInMonth, daysInWeek, daysIndex, index, i, l, daysArray; 

    numDaysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
    daysInWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; 
    daysIndex = { 'Sun': 0, 'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sat': 6 }; 
    index = daysIndex[(new Date(year, month - 1, 1)).toString().split(' ')[0]]; 
    daysArray = []; 

    for (i = 0, l = numDaysInMonth[month - 1]; i < l; i++) { 
     let n = {date: (i+ 1), day: daysInWeek[index++]}; 
     daysArray.push(n); 
     if (index == 7) index = 0; 
    } 

    return daysArray; 
} 
+0

この素敵な答えのためのHiと最初の感謝。私は尋ねられたように、月の正しい日を作成し、日曜日をスキップするためにうまく動作します。しかし、私は最初のものを選択すると、どのように円の中のアイテム(名前のリスト)をループすることができます。あなたのソリューションではアイテムの名前(Robinson、Walker、Henderson)をドロップダウンしてループの開始名として "Walker"を選ぶので、ループは "Walker"で始まり、次にWalkerで始まります「ヘンダーソン」であり、次のwoulbeは「ロビンソン」である(最後の項目の後に最初のものが来るので)。これどうやってするの?私はこれが十分に明確であることを願っています。 – MrBuggy

+0

ああ、わかります。私はすぐに更新しましょう。 –

+0

いいですね、ありがとう! – MrBuggy

関連する問題