Javascript 在列上使用ng repeat时如何更改表的行';td';(如果可能的话)
我正在创建一个表。首先,我一行有7列(星期日、星期一……)。 现在在tbody的行中,我将列重复为天(我有30天)。 这是重复所有的30项在单一(如我们所知)。 所以我想要的是,我只需要那一行正文的前七项,然后下一行的下七项,依此类推。。 解决方案会有帮助吗? 这是我的标记Javascript 在列上使用ng repeat时如何更改表的行';td';(如果可能的话),javascript,angularjs,angularjs-ng-repeat,ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,我正在创建一个表。首先,我一行有7列(星期日、星期一……)。 现在在tbody的行中,我将列重复为天(我有30天)。 这是重复所有的30项在单一(如我们所知)。 所以我想要的是,我只需要那一行正文的前七项,然后下一行的下七项,依此类推。。 解决方案会有帮助吗? 这是我的标记 <table class="table table-bordered"> <thead> <th>Sunday</th> <th>Monday<
<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>
星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{day.title}
$scope.staticEvents是一个包含30个对象(API响应)的数组。我创建了一个小提琴,希望能对您有所帮助。您可以通过$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>
星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{days[$index]}
{{天[$index+1]}
{{天[$index+2]}
{{天[$index+3]}
{{天[$index+4]}
{{天[$index+5]}
{{天[$index+6]}
我建议您稍微更改一下数据结构。对于一个简单的数组,通过ng if或ng开关的一次迭代很难生成多行表。 此外,通过这种数据结构设计,您将始终拥有周日1号、周一2号 试着制作二维数组,在那里你可以准备你的“月份”,然后通过两次ng重复。比如: 控制器:
$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;
}
$scope.month=makeMonth($scope.staticEvents,3);
函数makeMonth(天,第一个索引){
//天数[]-月内天数数组
//FIRSTINDEX-当月第一天的指数:0=周日,…,6=周六
如果(!angular.isArray(天)| | firstIndex<0 | | firstIndex>6){
返回[];
}
var月=[];
var行=[];
对于(i=0;i=firstIndex){
天=天[i-第一索引];
}
行。推(天);
如果(i%7==6){
月。推(行);
行=[];
}
}
如果(行!=[]){
月。推(行);
}
返回月份;
}
模板:
<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>
星期日
星期一
星期二
星期三
星期四
星期五
星期六
{{day.title}
为什么不将staticEvents
转换为长度为7的数组?这就是我现在正在做的。我只是想检查angularjs是否已经有了这个场景的任何指令。如果有,为什么要在我的控制器中编写一个冗长的代码。可能有一些日历插件,但我认为没有内置任何东西。你的答案看起来很好,但我的angularjs版本1.3无法理解。我已经在1.5版本上创建了一个简单的应用程序,工作正常。但我的主要项目(应用程序)是1.3。所以我需要更新angular.min.js文件。你能给我推荐一些使用angularjs 1.3的文件吗?我知道问题出在哪里了。这是我的数据。谢谢Junaid bhai。你有什么具体的错误吗?我创建了一个更旧的版本1.0.3,它似乎工作得很好:尝试一下这个数据['null',WeeklyOff','General','General','General','General','WeeklyOff','General','General','General','General','General','General','General','WeeklyOff','General','General','General','WeeklyOff','General','General','WeeklyOff','WeeklyOff','Ge','我显示了一些重复属性错误,所以我用ng repeat=“day in days”替换为ng repeat=“day in days track by$index”。现在它可以正常工作了。Thanx请放心,这个数据函数不起作用,因为从您的问题来看,它似乎使用了一个带有属性“title”的对象数组。