我有一個月的日子的JSON列表。以角度顯示日曆的JSON列表作爲日曆
像這樣:
{
date: "2016-08-01T00:00:00",
weekday: 1,
},
{
date: "2016-08-02T00:00:00",
weekday: 2,
},
...
凡weekday: 1
指週一weekday: 2
是星期二。
所以,我知道這個月有多少天,我知道這個月是從哪一天開始的。
使用Angular獲取JSON並創建視圖,我想將上面的JSON顯示爲標準日曆,即以七天的行數顯示。
如:
<table>
<tr>
<td>sun</td>
<td>mon</td>
<td>tue</td>
<td>wed</td>
<td>thr</td>
<td>fri</td>
<td>sat</td>
</tr>
<tr>
<td>day 1</td>
<td>day 2</td>
<td>day 3</td>
<td>day 4</td>
<td>day 5</td>
<td>day 6</td>
<td>day 7</td>
</tr>
....
</table>
兩個廣泛的解決方案似乎是可能的:
1)使用一些真正看中的視圖邏輯。計數器有很多ng-repeats
和ng-init
。這看起來很難而且很難看,如果甚至可能的話。
2)創建一個數組,然後使用嵌套ng-repeats
來顯示數據。
var calendar = function(){
var firstDay = data[0].weekday;
vm.month = [];
var week = [];
for(var i=0; i < data.length; i++){
var day = data[i];
if(i===0){
while(firstDay > 0){
week.push(null);
firstDay --;
}
}
if(week.length === 7){
vm.month.push(week);
week = [];
}
week.push(day);
}
console.log(vm.month);
}
工程很好。日曆數組包含包含日期信息的星期數組。要顯示它,我需要的只是幾個ng-repeats
:
<table>
<tr ng-repeat="week in vm.month">
<td ng-repeat="day in week">
{{day}}
</td>
</tr>
</table>
除了沒有。我得到以下錯誤:
Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys.
我懷疑我需要把我的數組變成一個JSON對象,但我不知道該怎麼做。
或者也許有一種方法使用嵌套ng-repeats
原樣?
如果有任何其他信息可以幫助,請讓我知道。
你只是想創建一個日曆? – dwbartz
通過索引使用track以$索引「' – tommybananas
'value在[4,4] track by $ index'中刪除[4,4]音軌中的重複問題'」值?你能發佈一個更完整的例子嗎? – crowhill